अक्सर मुझे बड़ी टेबलों के विरुद्ध प्रश्न चलाने होते हैं जिनके पास सही सूचकांक नहीं है। इसलिए मैं डीबीए को ऐसे सूचकांक बनाने के लिए कहता हूं। पहली चीज़ जो वह करती है वह तालिका के आँकड़ों को देखती है और सूचकांक स्थान के आकार को देखती है।
अक्सर वह मुझे एक वैकल्पिक समाधान खोजने के लिए कहता था क्योंकि "सूचकांक पहले से ही मेज से बड़ा है"। वह महसूस करता है कि सूचकांक को डेटा से छोटा होना चाहिए, क्योंकि, उसने मुझसे कहा "क्या आपने कभी किसी पुस्तक में सूचकांक को देखा है? यह पुस्तक की तुलना में बहुत छोटा है, और यह है कि टेबल इंडेक्स कैसा होना चाहिए"।
मुझे नहीं लगता कि उनका दर्शन सही है, लेकिन मैं उन्हें चुनौती नहीं दे सकता क्योंकि वह एक लीड डीबीए हैं और मैं एक डेवलपर हूं। मुझे लगता है कि यदि किसी क्वेरी को एक इंडेक्स की आवश्यकता है, तो इंडेक्स को "वर्कअराउंड" खोजने के बजाय बस बनाया जाना चाहिए, जो सिर्फ अपठनीय और अनपेक्षित एसपीएस बनाते हैं।
मैं केवल आवश्यक कॉलम चुन रहा हूं। समस्या यह है कि मैं तिथि के अनुसार फ़िल्टर कर रहा हूं, इसलिए इंजन कॉलम से मिलान करने के लिए आवश्यक रूप से एक टेबल स्कैन करेगा। आंकड़े इकट्ठा करने के लिए, दिन में एक बार क्वेरी चलती है, लेकिन इसे चलाने में 15 मिनट लगते हैं (हमारे पास एक और कठिन और तेज़ नियम है: कोई भी प्रक्रिया 3 मिनट से अधिक नहीं होनी चाहिए)।
डीबीए ने मुझे सूचकांक के आंकड़े दिखाए। उस टेबल पर लगभग 10 इंडेक्स थे, जिनमें से केवल 6 का उपयोग किया गया था (आंकड़े उनमें से 4 को शून्य हिट दिखाया गया था)। यह एक बड़ी प्रणाली है जिसमें 20 से अधिक डेवलपर भाग लेते हैं। सूचकांक जो भी कारण के लिए बनाए गए थे, और शायद अब उपयोग नहीं किए जाते हैं।
हमें SQL Server 2008 का समर्थन करने की आवश्यकता है, क्योंकि परीक्षण DBs चालू है। लेकिन क्लाइंट 2014 और 2016 के सभी हैं।