MySQL इंडेक्स का उपयोग नहीं करेगा यदि यह अनुमान लगाता है कि यह तालिका के एक महत्वपूर्ण बड़े हिस्से का चयन करेगा, और यह सोचता है कि टेबल-स्कैन वास्तव में उन मामलों में अधिक कुशल है।
सादृश्य से, यही कारण है कि किसी पुस्तक की अनुक्रमणिका में "द" जैसे बहुत सामान्य शब्द नहीं होते हैं - क्योंकि इंडेक्स में शब्द को देखने और पृष्ठ संख्याओं की सूची खोजने के लिए यह समय की बर्बादी होगी। बहुत लंबी सूची, यहाँ तक कि किताब का हर पन्ना। केवल कवर करने के लिए पुस्तक के कवर को पढ़ना अधिक कुशल होगा।
मेरा अनुभव यह है कि यह MySQL में होता है यदि किसी क्वेरी का खोज मानदंड तालिका के 20% से अधिक से मेल खाता है, और यह आमतौर पर सही क्रॉसओवर बिंदु होता है। डेटा प्रकार, तालिका के आकार आदि के आधार पर कुछ भिन्नता हो सकती है।
आप MySQL को यह समझाने के लिए एक संकेत दे सकते हैं कि एक टेबल-स्कैन निषिद्ध रूप से महंगा होगा, इसलिए इंडेक्स का उपयोग करने की अधिक संभावना होगी। यह आमतौर पर आवश्यक नहीं है, लेकिन आप इसे इस तरह कर सकते हैं:
SELECT taskid FROM tasktransitions FORCE INDEX (transitiondate_ix)
WHERE transitiondate>'2013-09-31 00:00:00';