Tarihleri integer - unixtimestamp olarak saklamanız, index büyüklüğünüzü
azaltıp, indexleme zamanını kısaltıp, ayrıca sıralama işlemlerini
kolaylaştırabilir.
integer 4 byte, datetime 8 byte yer kaplıyor.
Bu işlemler program kodunuzu değiştirmenizi gerektirecektir.
On 09/24/2010 02:11 AM, Nuri AKMAN wrote:
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?
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