अनुक्रमणिका क्रम तब मायने रखता है जब आपकी क्वेरी शर्तें केवल भाग . पर लागू होती हैं सूचकांक का। विचार करें:
-
SELECT * FROM table WHERE first_name="john" AND last_name="doe"
-
SELECT * FROM table WHERE first_name="john"
-
SELECT * FROM table WHERE last_name="doe"
अगर आपकी अनुक्रमणिका (first_name
. है , last_name
) क्वेरी 1 और 2 इसका उपयोग करेंगे, क्वेरी #3 नहीं होगी। यदि आपकी अनुक्रमणिका (last_name
) है , first_name
) प्रश्न 1 और 3 इसका उपयोग करेंगे, प्रश्न # 2 नहीं होगा। WHERE क्लॉज के भीतर कंडीशन ऑर्डर बदलने से किसी भी स्थिति में कोई प्रभाव नहीं पड़ता है।
विवरण यहां हैं।
अपडेट करें :
यदि उपरोक्त स्पष्ट नहीं है - MySQL केवल एक अनुक्रमणिका का उपयोग कर सकता है यदि क्वेरी स्थितियों में स्तंभ अनुक्रमणिका का सबसे बाईं ओर उपसर्ग बनाते हैं। ऊपर प्रश्न #2 उपयोग नहीं कर सकता (last_name
, first_name
) अनुक्रमणिका क्योंकि यह केवल first_name
. पर आधारित है और first_name
(last_name
. का सबसे बाएं उपसर्ग नहीं है , first_name
) सूचकांक।
क्वेरी के भीतर शर्तों का क्रम मायने नहीं रखता; उपरोक्त क्वेरी #1 उपयोग करने में सक्षम होगी (last_name
, first_name
) अनुक्रमणिका ठीक है क्योंकि इसकी शर्तें हैं first_name
और last_name
और, एक साथ लिया गया, वे (last_name
.) का सबसे बाईं ओर उपसर्ग बनाते हैं , first_name
) सूचकांक।