योजना के शीर्ष स्तर बेस टेबल (क्लस्टर इंडेक्स) से पंक्तियों को हटाने और चार गैर-अनुक्रमित इंडेक्स को बनाए रखने से संबंधित हैं। इनमें से दो इंडेक्स को पंक्ति-दर-पंक्ति बनाए रखा जाता है उसी समय क्लस्टर इंडेक्स विलोपन को संसाधित किया जाता है। ये "+2 गैर-क्लस्टर किए गए अनुक्रमित" हैं जो नीचे हरे रंग में हाइलाइट किए गए हैं।
अन्य दो गैर-अनुक्रमित अनुक्रमितों के लिए, ऑप्टिमाइज़र ने निर्णय लिया है कि इन अनुक्रमितों की कुंजियों को एक टेम्पर्ड वर्कटेबल (ईगर स्पूल) में सहेजना सबसे अच्छा है, फिर क्रमिक पहुंच पैटर्न को बढ़ावा देने के लिए सूचकांक कुंजियों को छाँटते हुए दो बार स्पूल चलाएं।
संचालन का अंतिम अनुक्रम प्राथमिक और द्वितीयक xml
अनुक्रमिकाओं को बनाए रखने से संबंधित है , जो आपकी DDL स्क्रिप्ट में शामिल नहीं थे:
इस बारे में बहुत कुछ किया जाना बाकी है। xml
आधार तालिका में डेटा के साथ गैर-अनुक्रमित अनुक्रमित और अनुक्रमित को सिंक्रनाइज़ रखा जाना चाहिए। इस तरह के सूचकांक को बनाए रखने की लागत एक टेबल पर अतिरिक्त सूचकांक बनाते समय आपके द्वारा किए गए ट्रेड-ऑफ का हिस्सा है।
इसने कहा, xml
सूचकांक विशेष रूप से समस्याग्रस्त हैं। ऑप्टिमाइज़र के लिए यह आकलन करना बहुत कठिन है कि इस स्थिति में कितनी पंक्तियाँ योग्य होंगी। वास्तव में, यह xml
सूचकांक के लिए बेतहाशा अधिक अनुमान लगाता है , जिसके परिणामस्वरूप इस क्वेरी के लिए लगभग 12GB मेमोरी दी जा रही है (हालांकि रनटाइम में केवल 28MB का उपयोग किया जाता है):
आप अधिक मेमोरी अनुदान के प्रभाव को कम करने की उम्मीद में, छोटे बैचों में विलोपन करने पर विचार कर सकते हैं।
आप किसी प्रकार के उपयोग के बिना किसी योजना के प्रदर्शन का परीक्षण भी कर सकते हैं OPTION (QUERYTRACEON 8795)
। यह एक अविवादित ट्रेस ध्वज है, इसलिए आपको इसे केवल एक विकास या परीक्षण प्रणाली पर आज़माना चाहिए, उत्पादन में कभी नहीं। यदि परिणामस्वरूप योजना बहुत तेज है, तो आप योजना एक्सएमएल पर कब्जा कर सकते हैं और इसका उपयोग उत्पादन क्वेरी के लिए योजना गाइड बनाने के लिए कर सकते हैं।