Selamlar, 1. count(1) ile count(*) arasında bir fark yok, buradan bir performans yakalayamazsın.
2. index'lerin kullanımında, en azından oracle'da, null kayıtlar saklanmaz. dolayısıyla, "is null" işe yaramaz. "is not null" için de durum aynıdır. ama mysql null kayıtlarını da index'lediğini söylese de, pratikte işe yaramadığı görülüyor. optimizer tablo için "full scan" yapıyor. bu yüzden sorgu çok ağır. burada yapılacak 2 yöntem var; a) tablo tanımında processed_date'i null olan kayıtları, kullanılmayan bir değere sabitleyip, "1900-01-01" gibi, not null olarak güncelleyeceksin. b) where proceessed_date > '1900-01-01' gibi bir değer verip index kullanımına zorlayacaksın. 3. tek bir kaynak yeterli olmuyor, optimizasyon ile ne bulursan okuyabilirsin. kolay gelsin. 27 Haziran 2014 02:13 tarihinde Nuri Akman <[email protected]> yazdı: > Arkadaşlar, > > *3 sorum var:* > > SELECT count(1) AS adet FROM items WHERE processed_time is not null > > MySQL kullanıyorum ve yukarıdaki gibi bir SQL'im var. > > Tablomda processed_time için index var. > > Ancak, count() fonksiyonunu kullandığım SQL'lerin çalışma süreleri oldukça > uzun. > > *Soru 1: *count() kullandığım yerlerde yapabileceğim bir optimizasyon var > mı acaba? > > *Soru 2: *tarih türündeki sahaları WHERE bölümünde kullanırken ne > yaparsam optimize edebilirim? > > *Soru 3: *MySQL'de SQL optimizasyonu konusunda önerebileceğiniz kaynak > var mı? > > *Not: *"Lütfen arama motorlarında ara" demeyin. Elbette aradım, ancak bu > konudaki sizin tecrübenizi öğrenmek istiyorum. > > Selamlar, > Nuri Akman > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > >
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
