अपने प्रश्नों में, OPTION(OPTIMIZE FOR UNKNOWN)
add जोड़ें (अंतिम खंड के रूप में) पैरामीटर सूँघने से रोकने के लिए। वाक्य रचना और स्पष्टीकरण के लिए, क्वेरी संकेत
पर दस्तावेज़ देखें। ।
SQL सर्वर पहली बार एक संग्रहीत कार्यविधि चलाता है जो इसे पारित किए गए मापदंडों के लिए निष्पादन योजना (ओं) को अनुकूलित करता है। यह एक प्रक्रिया में किया जाता है जिसे Parameter Sniffing
. कहा जाता है ।
सामान्य तौर पर, निष्पादन योजनाओं को SQL सर्वर द्वारा कैश किया जाता है ताकि SQL सर्वर को उसी क्वेरी के लिए हर बार पुन:संकलित न करना पड़े। अगली बार जब प्रक्रिया चलती है, तो SQL सर्वर इसमें प्रश्नों के लिए निष्पादन योजना (योजनाओं) का पुन:उपयोग करेगा ... हालाँकि, निष्पादन योजना पूरी तरह से अक्षम हो सकती है यदि आप इसे (उन्हें) विभिन्न मापदंडों के साथ कहते हैं ।
मैंने आपको जो विकल्प दिया है, वह SQL कंपाइलर को बताएगा कि निष्पादन योजना को विशिष्ट . के लिए अनुकूलित नहीं किया जाना चाहिए पैरामीटर, बल्कि किसी . के लिए पैरामीटर जो संग्रहीत प्रक्रिया को पारित किया जाता है।
दस्तावेज़ीकरण उद्धृत करने के लिए:
कुछ मामलों में संग्रहीत कार्यविधियाँ पैरामीटर सूँघने से लाभ उठा सकती हैं, कुछ मामलों में वे ऐसा नहीं करती हैं। संग्रहीत प्रक्रियाओं के लिए जो पैरामीटर सूँघने से लाभान्वित नहीं होते हैं, आप प्रत्येक क्वेरी में विकल्प जोड़ सकते हैं जो संग्रहीत प्रक्रिया के किसी भी पैरामीटर का उपयोग करता है।