Cum, 2010-09-24 tarihinde 02:11 +0300 saatinde, Nuri AKMAN yazdı:
> Arkadaşlar,
> 
> MySQL'de listeler adlı bir tablom var ve islem_tarihi adlı alan için
> index tanımım var. Tabloda 250.000+ kayıt var.
> 
> SQL1 sorguma 5431 kayıt geliyor ve süre: 0.027 saniye,
> SQL2 sorguma 5570 kayıt geliyor ve süre: 3.510 saniye (130 kat daha
> yavaş !)
> 
> SQL1 :   SELECT * FROM listeler WHERE islem_tarihi between
> '2010-09-20' AND  '2010-12-31'
> SQL2 :   SELECT * FROM listeler WHERE islem_tarihi between
> '2010-09-19' AND  '2010-12-31'
> 
> Çalışan SQL'i analiz ettiğimde:
> SQL1 için sadece 5431 satırı işlendiğini görüyorum
> SQL2 için tablonun tüm satırlarının (250.000 satırın hepsinin)
> işlediğini görüyorum. Yani, index devre dışı kalıyor :(
> 
> Bu durumun MySQL'in server parametrelerinden birinden kaynaklı
> olduğunu düşünüyorum. Fakat bulamadım... 
> 
> Bu durumu nasıl düzeltebilirim?
> 
Key Buffer değişkenini arttırabilirsiniz.
Bellek miktarınızı ve var olan key_buffer değerini yazarsanız yardımcı
olabilirim.

Bu arada index kullanılamadığına göre read buffer size değeri de
kullanılabilir. 

Sorununuz muhtemelen indexlenen parçanın key bufferdan daha büyük
olmasına bağlı bir sort vakası.

Bu arada bu değer tabloda datetime tipinde mi saklanıyor? Saklanmıyorsa
neden?
> 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