"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > रेंज क्वेरीज़ के लिए कौन सा समग्र सूचकांक इष्टतम है: उच्च बनाम निम्न कार्डिनैलिटी कॉलम?

रेंज क्वेरीज़ के लिए कौन सा समग्र सूचकांक इष्टतम है: उच्च बनाम निम्न कार्डिनैलिटी कॉलम?

2024-12-21 को प्रकाशित
ब्राउज़ करें:618

Which Composite Index is Optimal for Range Queries: High vs. Low Cardinality Columns?

रेंज क्वेरीज़ के साथ कंपोजिट इंडेक्स में हाई कार्डिनैलिटी कॉलम प्लेसमेंट

रेंज कंडीशन वाले कंपोजिट इंडेक्स वाली टेबल को क्वेरी करते समय, का प्लेसमेंट सूचकांक के भीतर कॉलम प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकते हैं।

एक प्राथमिक कुंजी (किया, फ़ाइल नाम) और दो समग्र के साथ तालिका फ़ाइलों पर विचार करें अनुक्रमणिका: INDEX(फ़ाइलटाइम, ext) और INDEX(ext, फ़ाइलटाइम)। दोनों इंडेक्स में फ़ाइलटाइम कॉलम होता है, जिसमें ext की तुलना में अधिक कार्डिनैलिटी होती है।

क्वेरी:

WHERE ext = '...'
  AND filetime BETWEEN ... AND ...

एक्स्ट और फ़ाइलटाइम दोनों के आधार पर डेटा तक पहुंचने की आवश्यकता होती है। प्रश्न उठता है: ऐसी क्वेरी के लिए कौन सा सूचकांक इष्टतम है?

विश्लेषण

इष्टतम सूचकांक निर्धारित करने के लिए, हम FORCE INDEX का उपयोग कर सकते हैं और निष्पादन योजनाओं की जांच कर सकते हैं:

-- Force range on filetime first
FORCE INDEX(fe) SELECT COUNT(*), AVG(fsize)
FROM files
WHERE ext = 'gif'
  AND filetime >= '2015-01-01'
  AND filetime = '2015-01-01'
  AND filetime 

आउटपुट से पता चलता है कि INDEX(ext, filetime) (ef) में काफी कम पंक्ति संख्या है, जो अधिक कुशल स्कैन का संकेत देता है।

ऑप्टिमाइज़र ट्रेस

ऑप्टिमाइज़र के व्यवहार का और अधिक विश्लेषण करने के लिए, हम ऑप्टिमाइज़र का उपयोग कर सकते हैं ट्रेस:

SELECT explain_format = 'JSON';

SELECT COUNT(*), AVG(fsize)
FROM files
WHERE ext = 'gif'
  AND filetime >= '2015-01-01'
  AND filetime 

निष्कर्ष

विश्लेषण के आधार पर, निम्नलिखित निष्कर्ष हो सकते हैं तैयार:

श्रेणी प्रश्नों में उपयोग किए जाने वाले मिश्रित सूचकांकों के लिए, समानता विधेय (इस मामले में विस्तार) में शामिल कॉलम को रखा जाना चाहिए इंडेक्स परिभाषा में प्रथम।
  • क्वेरी प्रदर्शन में सुधार होता है जब इंडेक्स में कॉलम को उस क्रम के अनुसार क्रमबद्ध किया जाता है जिसमें वे WHERE क्लॉज में उपयोग किए जाते हैं।
  • अकेले कार्डिनैलिटी निर्णायक नहीं है इष्टतम सूचकांक निर्धारित करने में कारक। ऐसे परिदृश्यों में जहां रेंज कॉलम में उच्च कार्डिनैलिटी होती है लेकिन समानता कॉलम समानता विधेय में शामिल होता है, समानता कॉलम को पहले रखने से बेहतर प्रदर्शन मिलता है।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3