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

MySQL:कम कार्डिनैलिटी/चयनात्मकता कॉलम =इंडेक्स कैसे करें?

आपके द्वारा वर्णित सूचकांक बहुत अधिक व्यर्थ है। इंडेक्स का सबसे अच्छा उपयोग तब किया जाता है जब आपको छोटा . चुनने की आवश्यकता होती है कुल पंक्तियों की तुलना में पंक्तियों की संख्या।

इसका कारण यह है कि डेटाबेस किसी तालिका तक कैसे पहुंचता है। तालिकाओं का मूल्यांकन या तो एक पूर्ण तालिका स्कैन द्वारा किया जा सकता है, जहां प्रत्येक ब्लॉक को पढ़ा जाता है और बदले में संसाधित किया जाता है। या एक पंक्तिबद्ध या कुंजी लुकअप द्वारा, जहां डेटाबेस में एक कुंजी/पंक्ति होती है और सटीक पंक्ति को पढ़ने की आवश्यकता होती है।

उस मामले में जहां आप प्राथमिक कुंजी या किसी अन्य अद्वितीय अनुक्रमणिका के आधार पर जहां क्लॉज का उपयोग करते हैं, उदाहरण के लिए। where id = 1 , डेटाबेस पंक्ति का डेटा कहाँ संग्रहीत किया जाता है, इसका सटीक संदर्भ प्राप्त करने के लिए अनुक्रमणिका का उपयोग कर सकता है। यह एक पूर्ण तालिका स्कैन करने और प्रत्येक ब्लॉक को संसाधित करने से स्पष्ट रूप से अधिक कुशल है।

अब वापस अपने उदाहरण पर, आपके पास where status = 'enabled' . का एक खंड है , सूचकांक 150m पंक्तियाँ लौटाएगा और डेटाबेस को अलग-अलग छोटे पठन का उपयोग करके प्रत्येक पंक्ति को बारी-बारी से पढ़ना होगा। जबकि तालिका को पूर्ण तालिका स्कैन के साथ एक्सेस करने से डेटाबेस को अधिक कुशल बड़े रीड का उपयोग करने की अनुमति मिलती है।

एक बिंदु है जिस पर इंडेक्स का उपयोग करने के बजाय केवल एक पूर्ण टेबल स्कैन करना बेहतर होता है। Mysql के साथ आप FORCE INDEX (idx_name) . का उपयोग कर सकते हैं प्रत्येक टेबल एक्सेस विधि के बीच तुलना की अनुमति देने के लिए आपकी क्वेरी के हिस्से के रूप में।

संदर्भ:http://dev .mysql.com/doc/refman/5.5/hi/how-to-avoid-table-scan.html



  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. Mysql केस जब ज्वाइन स्टेटमेंट एरर

  3. मैं MYSQL में किसी अन्य कॉलम द्वारा MAX (कॉलम मान), विभाजन के साथ पंक्तियों का चयन कैसे कर सकता हूं?

  4. पीडीओ के माध्यम से एडब्ल्यूएस आरडीएस से कनेक्ट करने में असमर्थ

  5. MySQL 2 कॉलम के आधार पर छाँटें