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

क्या कम कार्डिनैलिटी वाले इंडेक्स का उपयोग करना समझ में आता है?

एक इंडेक्स निम्न कार्डिनैलिटी क्षेत्रों पर भी मदद कर सकता है यदि:

  1. जब संभावित मूल्यों में से एक अन्य मूल्यों की तुलना में बहुत कम होता है और आप इसे खोजते हैं।

    उदाहरण के लिए, बहुत कम कलर ब्लाइंड महिलाएं हैं, इसलिए यह प्रश्न:

    SELECT  *
    FROM    color_blind_people
    WHERE   gender = 'F'
    

    gender . पर किसी इंडेक्स से संभवत:सबसे अधिक लाभ होगा ।

  2. जब मानों को तालिका क्रम में समूहीकृत किया जाता है:

    SELECT  *
    FROM    records_from_2008
    WHERE   year = 2010
    LIMIT 1
    

    हालांकि केवल 3 हैं यहां अलग-अलग वर्ष हैं, पहले के वर्षों के रिकॉर्ड सबसे पहले जोड़े जाते हैं इसलिए पहले 2010 को वापस करने से पहले बहुत सारे रिकॉर्ड को स्कैन करना होगा। इंडेक्स के लिए नहीं तो रिकॉर्ड करें।

  3. जब आपको ORDER BY / LIMIT need की आवश्यकता हो :

    SELECT  *
    FROM    people
    ORDER BY
            gender, id
    LIMIT 1
    

    अनुक्रमणिका के बिना, एक filesort की आवश्यकता होगी। हालांकि यह कुछ हद तक अनुकूलित है LIMIT , इसे अभी भी एक पूर्ण तालिका स्कैन की आवश्यकता होगी।

  4. जब अनुक्रमणिका क्वेरी में उपयोग किए गए सभी फ़ील्ड को कवर करती है:

    CREATE INDEX (low_cardinality_record, value)
    
    SELECT  SUM(value)
    FROM    mytable
    WHERE   low_cardinality_record = 3
    
  5. जब आपको DISTINCT need की आवश्यकता हो :

    SELECT  DISTINCT color
    FROM    tshirts
    

    MySQL INDEX FOR GROUP-BY का उपयोग करेगा , और यदि आपके पास कुछ रंग हैं, तो यह क्वेरी लाखों रिकॉर्ड के साथ भी तुरंत हो जाएगी।

    यह उस परिदृश्य का एक उदाहरण है जब निम्न कार्डिनैलिटी फ़ील्ड पर अनुक्रमणिका अधिक है एक उच्च कार्डिनैलिटी क्षेत्र पर उससे अधिक कुशल।

ध्यान दें कि यदि DML प्रदर्शन किसी मुद्दे पर ज्यादा नहीं है, तो इंडेक्स बनाना सुरक्षित है।

यदि अनुकूलक को लगता है कि सूचकांक अक्षम है, तो सूचकांक का उपयोग नहीं किया जाएगा।



  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. पीडीओ:ड्राइवर php/mysql नहीं मिल सका

  3. PHP - मेरी क्वेरी की सरणी की कुंजी आईडी बनाएं

  4. MySQL पर विफल रहता है:mysql त्रुटि 1524 (HY000):प्लगइन 'auth_socket' लोड नहीं है

  5. मैं SQLAlchemy अभिव्यक्ति से कच्ची, संकलित SQL क्वेरी कैसे प्राप्त करूं?