यह वास्तव में जितना दिखता है उससे कहीं अधिक कठिन है - एक विशिष्ट आधुनिक DBMS (और MS SQL सर्वर कोई अपवाद नहीं है) कभी-कभी एक पूर्ण तालिका स्कैन करेगा, भले ही अनुक्रमणिका उपलब्ध हो, केवल इसलिए कि यह कम मात्रा में डेटा पर तेज़ हो सकता है।
उदाहरण:
-
इस SQL Fiddle उदाहरण में अंतिम कथन सूचकांक से संतुष्ट हो सकते हैं, फिर भी क्वेरी योजना स्पष्ट रूप से एक टेबल स्कैन का संकेत देती है:
-
लेकिन अगर हम कुछ डेटा डालें , सूचकांक का उपयोग किया जाता है:
इतना ही नहीं, DBMS जो निर्णय लेता है, वह इस बात से प्रभावित हो सकता है कि आंकड़े हैं।
सूचकांक का उपयोग किया गया है या नहीं, इसके लिए सबसे विश्वसनीय परीक्षण केवल अपने डेटाबेस को डेटा की प्रतिनिधि मात्रा से भरना है। और फिर निष्पादन योजना देखें . और जब आप इस पर हों, तो क्वेरी के वास्तविक निष्पादन को समय देना न भूलें!
एक सरल उदाहरण:यदि पूरी तालिका एक एकल डेटाबेस पृष्ठ में फिट हो जाती है, तो उस पृष्ठ को लोड करना और अनुक्रमिक रूप से इसके माध्यम से जाना, अनुक्रमणिका वाले पृष्ठ के लिए अतिरिक्त I/O पर प्रतीक्षा करने की तुलना में तेज़ है।