Herkese Merhaba,

Arkadaşlar, MySQL tablomda 10M+ kayıt var. Aradığım TC Kimlik No, son 3 aya
ait kayıtlar arasında var mı diye bakıyorum. Varsa, en yeni kaydı getirmeye
çalışıyorum. Kullandığım SQL şöyle:

SELECT * FROM islemler
WHERE tckimlikno = '12345678901'
AND islem_tarihi >= DATE_ADD(NOW(), INTERVAL -3 MONTH)
ORDER BY kayit_id DESC
LIMIT 1

tckimlikno (varchar), islem_tarihi(date) ve kayit_id(int) için index
tanımım var.

*DURUM 1:*
Aranan kritere uygun TC'nin kayıtlarda *olması* halinde,
sorgu süresi 0.002 saniye ve 230 rows (explain'den bakında) görünüyor.
Her şey güzel :)

*DURUM 2:*
Aranan kritere uygun TC'nin kayıtlarda *olmaması* halinde,
sorgu süresi 8 saniye ve 25 rows (explain'den bakında) görünüyor.
*Nasıl oluyor da bu sorgunun sonuçlanması bu kadar uzun sürüyor?*

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

Cevap