के साथ तिथि से MySQL क्वेरी 22 लाख रिकॉर्ड के साथ मेरी बड़ी तालिका है।बड़े इन्वर्वल
select auto_alerts from alerts_stat where endDate > "2012-12-01"
प्रदर्शन में सुधार करने के लिए मैं endData क्षेत्र के लिये BTREE सूचकांक कहा::
जब मैं चाहता हूँ:
CREATE INDEX endDate_index USING BTREE ON alerts_stat(endDate)
बाद मैं क्वेरी निष्पादन योजना का विश्लेषण शुरू कर मैं अगले क्वेरी निष्पादित करने के लिए चाहते हैं 15 से 7 दिन पहले पैरामीटर प्राप्त करें:
explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 7;
मुझे 2,762,088 पंक्तियों को संसाधित करने के लिए अगली निष्पादन योजना मिली।
'1', 'SIMPLE', 'browser_plugin_alerts_stat', 'range', 'endDate_index', 'endDate_index', '4', NULL, '2762088', 'Using where'
जब मैं एक दिन के अंतराल में वृद्धि, मैं प्राप्त किया:
explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 6;
सभी 22,923,126 पंक्तियों पर कार्रवाई करने के MySQL योजना कहा समझाने।
'1', 'SIMPLE', 'browser_plugin_alerts_stat', 'ALL', 'endDate_index', NULL, NULL, NULL, '22932390', 'Using where'
उदाहरण के लिए WHERE प्रक्रिया 22,925,642 में किसी भी शर्त के बिना चयन करें।
क्या मैं निष्पादन योजना में सुधार कर सकता हूं? शायद मुझे कहीं गलती है, या सामान्य MySQL behaivior है?
धन्यवाद। सोचो यह मेरा मामला है। तो यह MySQL विशिष्ट व्यवहार है। क्या मैं बड़े अंतराल के लिए उदाहरण योग ('alerts_sp') प्राप्त करने के लिए किसी भी तरह से क्वेरी सुधार सकता हूं? – Taky