एक इंडेक्स निम्न कार्डिनैलिटी क्षेत्रों पर भी मदद कर सकता है यदि:
-
जब संभावित मूल्यों में से एक अन्य मूल्यों की तुलना में बहुत कम होता है और आप इसे खोजते हैं।
उदाहरण के लिए, बहुत कम कलर ब्लाइंड महिलाएं हैं, इसलिए यह प्रश्न:
SELECT * FROM color_blind_people WHERE gender = 'F'
gender
. पर किसी इंडेक्स से संभवत:सबसे अधिक लाभ होगा । -
जब मानों को तालिका क्रम में समूहीकृत किया जाता है:
SELECT * FROM records_from_2008 WHERE year = 2010 LIMIT 1
हालांकि केवल
3
हैं यहां अलग-अलग वर्ष हैं, पहले के वर्षों के रिकॉर्ड सबसे पहले जोड़े जाते हैं इसलिए पहले2010
को वापस करने से पहले बहुत सारे रिकॉर्ड को स्कैन करना होगा। इंडेक्स के लिए नहीं तो रिकॉर्ड करें। -
जब आपको
ORDER BY / LIMIT
need की आवश्यकता हो :SELECT * FROM people ORDER BY gender, id LIMIT 1
अनुक्रमणिका के बिना, एक
filesort
की आवश्यकता होगी। हालांकि यह कुछ हद तक अनुकूलित हैLIMIT
, इसे अभी भी एक पूर्ण तालिका स्कैन की आवश्यकता होगी। -
जब अनुक्रमणिका क्वेरी में उपयोग किए गए सभी फ़ील्ड को कवर करती है:
CREATE INDEX (low_cardinality_record, value) SELECT SUM(value) FROM mytable WHERE low_cardinality_record = 3
-
जब आपको
DISTINCT
need की आवश्यकता हो :SELECT DISTINCT color FROM tshirts
MySQL
INDEX FOR GROUP-BY
का उपयोग करेगा , और यदि आपके पास कुछ रंग हैं, तो यह क्वेरी लाखों रिकॉर्ड के साथ भी तुरंत हो जाएगी।यह उस परिदृश्य का एक उदाहरण है जब निम्न कार्डिनैलिटी फ़ील्ड पर अनुक्रमणिका अधिक है एक उच्च कार्डिनैलिटी क्षेत्र पर उससे अधिक कुशल।
ध्यान दें कि यदि DML
प्रदर्शन किसी मुद्दे पर ज्यादा नहीं है, तो इंडेक्स बनाना सुरक्षित है।
यदि अनुकूलक को लगता है कि सूचकांक अक्षम है, तो सूचकांक का उपयोग नहीं किया जाएगा।