बिल्कुल जवाब नहीं है, लेकिन मैं अपना अनुभव साझा करूंगा।
पैरामीटर सूँघने में SQL सर्वर के आने और मुझे काटने में कुछ साल लगे, जब मैं ज्यादातर डीबीए काम करने के लिए दूर जाने के बाद डेवलपर डीबीए में वापस गया। मैं इंजन के बारे में और अधिक समझ गया कि SQL कैसे काम करता है, क्लाइंट के लिए सबसे अच्छा क्या बचा था आदि और मैं एक बेहतर SQL कोडर था।
उदाहरण के लिए, डायनेमिक SQL या CURSORs या केवल सादा खराब SQL कोड शायद कभी भी पैरामीटर सूँघने से पीड़ित नहीं होगा। लेकिन बेहतर सेट प्रोग्रामिंग या डायनेमिक SQL या अधिक सुरुचिपूर्ण SQL से बचने की अधिक संभावना होगी।
मैंने इसे जटिल खोज कोड (बहुत सारी सशर्त) और जटिल रिपोर्ट के लिए देखा जहां पैरामीटर डिफ़ॉल्ट ने योजना को प्रभावित किया। जब मैं देखता हूं कि कितने कम अनुभवी डेवलपर्स इस कोड को लिखेंगे, तो इसे पैरामीटर सूँघने का नुकसान नहीं होगा।
किसी भी घटना में, मैं RECOMPILE के साथ पैरामीटर मास्किंग पसंद करता हूं। आँकड़े या अनुक्रमणिका को अद्यतन करना वैसे भी एक पुन:संकलन को बाध्य करता है। लेकिन हर समय पुन:संकलित क्यों करें? मैंने आपके एक प्रश्न का उत्तर कहीं और एक लिंक के साथ दिया है जिसमें उल्लेख किया गया है कि संकलन के दौरान मापदंडों को सूँघ लिया जाता है, इसलिए मुझे इसमें विश्वास भी नहीं है।
पैरामीटर मास्किंग एक ओवरहेड है, हां, लेकिन यह ऑप्टिमाइज़र को कंबल के पुन:संकलन के बजाय क्वेरी केस का मूल्यांकन करने की अनुमति देता है। विशेष रूप से SQL सर्वर 2005 के कथन स्तर के पुनर्संकलन के साथ
SQL सर्वर 2008 में अज्ञात के लिए ऑप्टिमाइज़ करें भी मास्किंग के समान ही काम करता प्रतीत होता है। मेरे SQL सर्वर MVP सहयोगी और मैंने कुछ समय जांच में बिताया और इस निष्कर्ष पर पहुंचे।