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

Cevap