समय से पहले निर्धारित करने के लिए सटीक सीमा वास्तव में कठिन है।
एक चीज जिसे ज्यादातर लोग कम आंकते हैं, वह उच्च आवश्यकताएं हैं जो एक सूचकांक को पूरा करना चाहिए, इससे पहले कि वह एक प्रश्न में उपयोग किए जाने वाले उम्मीदवार बन जाए।
एक कुशल (अस्पष्ट) सूचकांक
महान चयनात्मकता प्रदान करता है , उदाहरण के लिए कुल पंक्तियों का केवल एक बहुत छोटा प्रतिशत (<1%, <2%) देता है। यदि चयनात्मकता दी गई नहीं है - SQL सर्वर की क्वेरी ऑप्टिमाइज़र इस सूचकांक को अनदेखा कर देगा
आदर्श रूप से क्वेरी को कवर करना चाहिए , यानी क्वेरी के लिए आवश्यक सभी तह कॉलम वापस करना चाहिए । यदि आप एक इंडेक्स बना सकते हैं जिसमें 1 या 2 इंडेक्स कॉलम हैं, और इसमें शामिल स्तंभों के रूप में एक और मुट्ठी भर (2-4) कॉलम शामिल हैं और इस तरह आप एक क्वेरी कवर कर सकते हैं - तो संभावना है कि क्वेरी ऑप्टिमाइज़र इस इंडेक्स का उपयोग करेगा। जिसका अर्थ यह भी है: यदि आपका कोड हमेशा सभी कॉलमSELECT * .....
लाने के लिए उपयोग कर रहा है, तो उपयोग किए जाने वाले सूचकांकों की संभावना कम हो जाती है - वास्तव में
मुझे यकीन है कि अन्य मानदंडों का एक टन भी है - लेकिन मुझे विश्वास होगा कि ये दोनों सबसे महत्वपूर्ण हैं। बेशक, आपको हमेशा अपने सूचकांकों को ठीक से बनाए रखना चाहिए (पुनर्गठित करना, पुनर्निर्माण करना) और सुनिश्चित करें कि आपके सूचकांकों से जुड़े आँकड़े अद्यतित हैं।
पुनश्च: विदेशी प्रमुख स्तंभों पर गैर-सूचीबद्ध सूचकांक एक विशेष मामला है; डिफ़ॉल्ट रूप से, मैं हमेशा उन्हें जोड़ने की सलाह दूंगा, क्योंकि वे दोनों संदर्भात्मक अखंडता जांचों को गति देने में मदद करते हैं, साथ ही JOIN
उन एफके बाधाओं पर भी। लेकिन यहाँ भी, यह कुछ अतिरिक्त जोड़कर उन FK स्तंभ सूचकांकों को "विस्तारित" करने के लिए बिल्कुल वैध है "स्तंभों में उन्हें और भी अधिक उपयोगी बनाने के लिए।"