एक सामान्य नियम के रूप में, एक बहु-स्तंभ अनुक्रमणिका में, आप चाहते हैं कि उच्चतम कार्डिनैलिटी वाले स्तंभ, या दूसरे शब्दों में, विशिष्ट मानों की उच्चतम संख्या, अनुक्रमणिका में पहले आए।
अधिक सटीक होने के लिए, आप चाहते हैं कि सबसे कम संभव मिलान वाला कॉलम आपके खोज मानदंड से पहले हो ताकि आप जितना संभव हो सके परिणाम को कम कर सकें, लेकिन सामान्य तौर पर, यह उच्चतम कार्डिनैलिटी के समान है।
इसलिए, आपके उदाहरण में, आप चाहते हैं कि केवल 6 अलग-अलग मानों वाले कॉलम से पहले लाखों अलग-अलग मान इंडेक्स में हों।
यह मानते हुए कि आप लाखों मानों में से केवल एक पंक्ति का चयन कर रहे हैं, यह आपको अधिक पंक्तियों को तेज़ी से समाप्त करने की अनुमति देता है।
समान कार्डिनैलिटी वाले दो स्तंभों पर विचार करते समय, छोटे वाले को पहले रखें (INTEGER
VARCHAR
. से पहले के कॉलम कॉलम) क्योंकि MySQL तुलना कर सकता है और उन पर तेजी से पुनरावृति कर सकता है।
एक चेतावनी यह है कि यदि आप श्रेणियों के साथ चयन कर रहे हैं (उदा. WHERE datecol > NOW()
), तो आप चाहते हैं कि रेंज कॉलम सबसे दूर दाईं ओर हों, और आपके कॉलम एक स्थिरांक वाले हों (जैसे। WHERE id = 1
) बांई ओर। ऐसा इसलिए है क्योंकि आपकी अनुक्रमणिका का उपयोग केवल प्रथम श्रेणी मान तक खोजने और ऑर्डर करने के लिए किया जा सकता है।