8

के साथ तिथि से 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 है?

उत्तर

3

जब परिणाम सेट सभी पंक्तियों का 8-9% से अधिक हो जाता है, तो MySQL पूर्ण तालिका स्कैन करता है। मेरे लिए, ऐसा लगता है कि एक दिन आप पूर्ण तालिका स्कैन दिशा में MySQL स्विंग जोड़ते हैं। आप इंडेक्स को यह देखने के लिए मजबूर कर सकते हैं कि परिणाम बेहतर है या नहीं।

अद्यतन:

मैं क्या पढ़ा है से, MySQL क्वेरी अनुकूलक इस तरह सीमा मामलों में गलत चयन करने के लिए जाता है, तो यह आसानी से एक सूचकांक के लिए मजबूर कर बेहतर काम कर सकता था। अन्यथा, यह सरल सवाल है, और मैं अनुकूलन के लिए और अधिक जगह नहीं है।

शायद इन दो कॉलम पर Covering index बनाना और इसके उपयोग को मजबूर करना सर्वोत्तम परिणाम दे सकता है।

+0

धन्यवाद। सोचो यह मेरा मामला है। तो यह MySQL विशिष्ट व्यवहार है। क्या मैं बड़े अंतराल के लिए उदाहरण योग ('alerts_sp') ​​प्राप्त करने के लिए किसी भी तरह से क्वेरी सुधार सकता हूं? – Taky

संबंधित मुद्दे