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

क्वेरी में वेरिएबल का उपयोग करने से भिन्न क्वेरीप्लान उत्पन्न होता है

क्योंकि जब आप ऑटो-पैरामीटराइज़ेशन के साथ FIXED मानों का उपयोग करते हैं, तो क्वेरी प्लान वास्तव में जानता है कि क्वेरी को चलाने के लिए उसे किस मूल्य की आवश्यकता है। इसलिए योजना को विशेष रूप से उन मूल्यों के अनुरूप बनाया गया है।

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

SQL सर्वर 2008 में, आप सेट कर सकते हैं कि सरल पैरामीटर स्वचालित रूप से पैरामीटर किए गए हैं या नहीं ताकि आपको लगातार "सर्वश्रेष्ठ औसत मामला" योजना मिल सके - इसके सभी अच्छे और बुरे के साथ।

संदर्भ:

संपादित करें - प्रदर्शन पर

प्रदर्शन के लिए, अनुकूलक इसे गलत कर सकता है - इस मामले में उसने for the exact values आंकड़ों को देखा। और महसूस किया कि सूचकांक सहायक नहीं है (एक टिपिंग बिंदु मुद्दा हो सकता है) इसलिए योजना इसके बजाय क्लस्टर स्कैन के लिए है। यह एक अच्छी कला है कि क्या किसी क्वेरी योजना को लागू करना है - लेकिन स्पष्ट रूप से इंडेक्स का उपयोग करना

. के लिए 50% तेज है
  1. विशिष्ट हार्डवेयर
  2. समय डेटा वितरण में विशिष्ट बिंदु
  3. विशिष्ट मान दिए गए हैं

जब तक मेरे पास कोई बहुत अच्छा कारण न हो, मैं क्वेरी ऑप्टिमाइज़र (उदाहरण के लिए इंडेक्स संकेतों का उपयोग करके) को तब तक नहीं खेलूंगा जब तक कि मेरे पास यह साबित करने के लिए बहुत सारे डेटा न हों कि यह हमेशा इसे तेज़ कर देगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्तमान वर्कस्टेशन नाम लौटाएं जो SQL सर्वर (T-SQL) से जुड़ा है

  2. SQL सर्वर के लिए Intel Optane संग्रहण का उपयोग करना

  3. मैं त्रुटि 3002 को कैसे समाप्त करूं?

  4. Azure पोर्टल में Linux पर SQL Server 2017 के साथ प्रारंभ करना

  5. मैं किसी तालिका में केवल नवीनतम प्रविष्टि का चयन कैसे करूं?