Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पैरामीटर मान के साथ-साथ हार्ड कोडिंग का प्रदर्शन नहीं करता है

सारांश संपादित करें Damien_The_Unbeliever के अनुरोध के अनुसार

लक्ष्य यह है कि योजना बनने से पहले एसक्यूएल को वैरिएबल वैल्यू के बारे में सर्वोत्तम/अधिकतम जानकारी प्राप्त करना है, आम तौर पर पैरामीटर स्नीफिंग ऐसा करता है। एक कारण हो सकता है कि इस मामले में पैरामीटर सूँघने को 'अक्षम' किया गया था। वास्तविक कोड का बेहतर प्रतिनिधित्व देखे बिना हम वास्तव में यह नहीं कह सकते कि समाधान क्या है या समस्या क्यों मौजूद है। प्रभावित क्षेत्रों को वास्तविक मूल्यों का उपयोग करके योजनाएँ बनाने के लिए बाध्य करने के लिए नीचे दी गई चीज़ों को आज़माएँ।

*अधिक विवरण के साथ लंबा संस्करण *

क्या यह आपकी वास्तविक संग्रहित खरीद है? क्या आपके पास अपने पैरामीटर के लिए डिफ़ॉल्ट मान हैं? यदि ऐसा है, तो वो क्या हैं?

पैरामीटर सूँघने से मदद मिल सकती है - लेकिन योजना को अच्छी तरह से बनाने के लिए इसमें विशिष्ट पैरामीटर मान होने चाहिए, और यदि नहीं, तो यह वास्तव में मदद नहीं करेगा या गैर विशिष्ट पैरामीटर मान के आधार पर एक खराब योजना बनाएगा। इसलिए यदि किसी चर का डिफ़ॉल्ट मान शून्य या एक मान है जो पहली बार चलाए जाने पर एक विशिष्ट मान नहीं है और योजना संकलित है - यह एक खराब योजना बनाता है।

अगर किसी और ने यह स्पोक लिखा है - हो सकता है कि उन्होंने जानबूझकर 'अक्षम' पैरामीटर को स्थानीय चर के साथ किसी कारण से सूँघ लिया हो। व्यावसायिक नियमों के लिए इन परिवर्तनशील संरचनाओं की आवश्यकता हो सकती है।

लक्ष्य यह है कि योजना बनने से पहले एसक्यूएल को वैरिएबल वैल्यू के बारे में सर्वोत्तम/अधिकतम जानकारी प्राप्त हो, और आम तौर पर पैरामीटर स्नीफिंग ऐसा करता है। लेकिन ऐसी चीजें हैं जो इसे प्रदर्शन को नकारात्मक रूप से प्रभावित कर सकती हैं, और यही कारण है कि यह 'अक्षम' है। ऐसा अभी भी लगता है कि योजना पैरामीटर के लिए असामान्य मूल्यों के साथ बनाई जा रही है या अभी भी पर्याप्त जानकारी नहीं है - पैरामीटर स्नीफिंग का उपयोग कर या नहीं।

स्पोक के अंदर क्वेरी को कॉल करने का प्रयास करें प्रभावित प्रश्नों को निष्पादित करने के लिए sp_executesql का उपयोग करें, इसे वास्तविक चर के साथ उस क्षेत्र के लिए एक योजना तैयार करने के लिए मजबूर करें, और देखें कि यह बेहतर है या नहीं। यह आपका समाधान हो सकता है यदि आपके पास इस प्रकार का अनियमित पैरामीटर मान होना है - संग्रहीत प्रोसेस बनाएं जो प्रभावित हिस्सों को चलाते हैं और बाद में उन्हें संग्रहीत प्रक्रिया के भीतर से कॉल करते हैं - चर को एक सामान्य मान प्राप्त होने के बाद।

वास्तविक कोड का बेहतर प्रतिनिधित्व देखे बिना, यह देखना मुश्किल है कि समस्या क्या है। उम्मीद है कि यह जानकारी मदद करेगी -



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिनांक स्तंभ के अनुसार एक स्तंभ समूह का योग

  2. SQL सर्वर लेनदेन लॉग की मूल बातें

  3. प्रत्येक पंक्ति के लिए डेटा वाले स्तंभों की संख्या गिनें

  4. अधिकतम पंक्ति आकार 8060 त्रुटि

  5. क्या मैं इंटरसेक्टिंग तिथियों को मर्ज करने के लिए SQL सर्वर सीटीई का उपयोग कर सकता हूं?