22 milyon kayıt bulunan büyük bir tablom var. Ben istediğinizdeMySQL sorgusu ile büyük inverval tarihi
: Ben sorgu yürütme planı analiz etmek başlattıktan sonra
CREATE INDEX endDate_index USING BTREE ON alerts_stat(endDate)
:
select auto_alerts from alerts_stat where endDate > "2012-12-01"
Ben endData alan için B-ağacı indeks eklendi performansını artırmak için: sonraki sorguyu yürütmek istiyor Şu ana kadar 15'den 7 güne kadar olan parametreleri al:
explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 7;
2.762.088 satırı işlemek için bir sonraki çalıştırma planım var.
'1', 'SIMPLE', 'browser_plugin_alerts_stat', 'range', 'endDate_index', 'endDate_index', '4', NULL, '2762088', 'Using where'
Ben bir gün aralığı artırmak
i aldı:explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 6;
MySQL planı tüm 22923126 satırları işlemek için sözü açıklar. Örneğin, WHERE işlemi 22,925,642'de herhangi bir koşul olmaksızın seçim yapın.
Yürütme planını geliştirebilir miyim? Belki bir yerde hatam var, ya da normal MySQL behaivior?
Teşekkürler. Benim durumum olduğunu düşün. Yani MySQL özel davranış. Büyük bir aralık için örnek toplamı ('alertts_sp') almak için sorguyu bir şekilde geliştirebilir miyim? – Taky