हमारे पास DMV आंकड़ों के अनुसार सैकड़ों अप्रयुक्त इंडेक्सों के साथ एक बहुत बड़ा डेटाबेस है, जो जुलाई में सर्वर के अंतिम बार रिबूट होने के बाद से जमा हो रहा है। हमारे डीबीए में से एक ने निम्नलिखित सतर्क बयान दिए, जो मेरे लिए मायने नहीं रखते:
- इससे पहले कि हम किसी इंडेक्स को छोड़ दें, हमें यह सुनिश्चित करने की आवश्यकता है कि क्या यह एक विशिष्टता बाधा को लागू नहीं करता है, क्योंकि क्वेरी ऑप्टिमाइज़र को इस इंडेक्स के अस्तित्व की आवश्यकता हो सकती है।
- जब भी कोई इंडेक्स बनाया जाता है, उस इंडेक्स से संबंधित आंकड़े SQL सर्वर में भी बनाए जाते हैं। कोई क्वेरी इंडेक्स का उपयोग नहीं कर रही हो सकती है, लेकिन वह उसके आँकड़ों का उपयोग कर रही हो सकती है। इसलिए हम एक स्थिति में भाग सकते हैं, सूचकांक छोड़ने के बाद एक विशेष क्वेरी प्रदर्शन वास्तव में खराब हो जाता है। SQL सर्वर सांख्यिकी के उपयोग के आंकड़े नहीं रखता है। यद्यपि हमारे पास "ऑटो क्रेट स्टैटिस्टिक्स" सुविधा हमारे डेटाबेस पर सक्षम है, मुझे नहीं पता है कि क्वेरी ऑप्टिमाइज़र लापता आँकड़ों को बनाने से पहले सभी मापदंडों को आंतरिक रूप से पूरा करना होगा।
# 1 के बारे में, यह मुझे लगता है कि एसक्यूएल सर्वर वास्तव में एक डालने / अद्यतन करने से पहले विशिष्टता का निर्धारण करने के लिए सूचकांक पर एक खोज करेगा, और इसलिए, सूचकांक का उपयोग नहीं होने के रूप में नहीं दिखाएगा।
# 2 के बारे में, क्या यह वास्तव में संभव है?
वैसे, जब मैं कहता हूं कि एक इंडेक्स का उपयोग नहीं किया गया है, तो मेरा मतलब है कि कोई खोज नहीं है और कोई स्कैन नहीं है।