आप यह सुनिश्चित करना चाहते हैं कि क्वेरी केवल अनुक्रमणिका का उपयोग करेगी, इसलिए सुनिश्चित करें कि अनुक्रमणिका आपके द्वारा चुनी जा रही सभी फ़ील्ड को कवर करती है। साथ ही, चूंकि यह एक श्रेणी क्वेरी शामिल है, इसलिए आपको पहले इंडेक्स में वेनिड होना चाहिए, क्योंकि इसे स्थिरांक के रूप में पूछताछ की जाती है। इसलिए मैं इस तरह बनाऊंगा और अनुक्रमित करूंगा:
ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);
इस इंडेक्स के साथ, क्वेरी को पूरा करने के लिए आवश्यक सभी जानकारी इंडेक्स में होती है। इसका मतलब यह है कि, उम्मीद है, स्टोरेज इंजन वास्तव में टेबल के अंदर ही बिना जानकारी प्राप्त करने में सक्षम है। हालाँकि, MyISAM ऐसा करने में सक्षम नहीं हो सकता है, क्योंकि यह डेटा को इंडेक्स की पत्तियों में संग्रहीत नहीं करता है, इसलिए हो सकता है कि आपको अपनी इच्छा की गति में वृद्धि न मिले। यदि ऐसा है, तो तालिका की एक प्रति बनाने का प्रयास करें, और प्रतिलिपि पर InnoDB इंजन का उपयोग करें। वहां समान चरणों को दोहराएं और देखें कि क्या आपको महत्वपूर्ण गति वृद्धि मिलती है। InnoDB करता है इंडेक्स के पत्तों में फ़ील्ड मानों को स्टोर करें, और इंडेक्स को कवर करने की अनुमति दें।
अब, उम्मीद है कि जब आप प्रश्न की व्याख्या करेंगे तो आपको निम्नलिखित दिखाई देंगे:
mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;
id select_type table type possible_keys key [..] Extra
1 SIMPLE events range date_idx, indexNameHere indexNameHere Using index, Using where