Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL ने अनुक्रमणिका का उपयोग करने से इंकार कर दिया

MySQL इंडेक्स का उपयोग नहीं करेगा यदि यह अनुमान लगाता है कि यह तालिका के एक महत्वपूर्ण बड़े हिस्से का चयन करेगा, और यह सोचता है कि टेबल-स्कैन वास्तव में उन मामलों में अधिक कुशल है।

सादृश्य से, यही कारण है कि किसी पुस्तक की अनुक्रमणिका में "द" जैसे बहुत सामान्य शब्द नहीं होते हैं - क्योंकि इंडेक्स में शब्द को देखने और पृष्ठ संख्याओं की सूची खोजने के लिए यह समय की बर्बादी होगी। बहुत लंबी सूची, यहाँ तक कि किताब का हर पन्ना। केवल कवर करने के लिए पुस्तक के कवर को पढ़ना अधिक कुशल होगा।

मेरा अनुभव यह है कि यह MySQL में होता है यदि किसी क्वेरी का खोज मानदंड तालिका के 20% से अधिक से मेल खाता है, और यह आमतौर पर सही क्रॉसओवर बिंदु होता है। डेटा प्रकार, तालिका के आकार आदि के आधार पर कुछ भिन्नता हो सकती है।

आप MySQL को यह समझाने के लिए एक संकेत दे सकते हैं कि एक टेबल-स्कैन निषिद्ध रूप से महंगा होगा, इसलिए इंडेक्स का उपयोग करने की अधिक संभावना होगी। यह आमतौर पर आवश्यक नहीं है, लेकिन आप इसे इस तरह कर सकते हैं:

SELECT taskid FROM tasktransitions FORCE INDEX (transitiondate_ix)
WHERE transitiondate>'2013-09-31 00:00:00';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL डेटा फ़ाइल सिकुड़ती नहीं है

  2. रिक्त स्थान वाले तालिका नाम के पेशेवरों और विपक्ष

  3. MySQL डेटाबेस के लिए INFORMATION_SCHEMA तालिका बनाएं

  4. MySQL क्वेरी परिणाम में अनुक्रमिक संख्या कैसे दिखाएं

  5. जेनकींस पाइपलाइन में जेडीबीसी ड्राइवर कैसे जोड़ें?