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

मैं एक सबक्वायरी को #temp तालिका के साथ-साथ प्रदर्शन करने के लिए कैसे मजबूर कर सकता हूं?

आप इस व्यवहार को क्यों देखते हैं, इसके कुछ संभावित स्पष्टीकरण हैं। कुछ सामान्य हैं

  1. सबक्वायरी या सीटीई का बार-बार पुनर्मूल्यांकन किया जा सकता है।
  2. आंशिक परिणामों को #temp में परिवर्तित करना तालिका समीकरण से कुछ संभावित विकल्पों को हटाकर योजना के उस हिस्से के लिए अधिक इष्टतम जुड़ाव आदेश को बाध्य कर सकती है।
  3. आंशिक परिणामों को #temp में परिवर्तित करना तालिका खराब कार्डिनैलिटी अनुमानों को ठीक करके शेष योजना में सुधार कर सकती है।

सबसे विश्वसनीय तरीका बस एक #temp . का उपयोग करना है तालिका बनाएं और इसे स्वयं अमल में लाएं।

विफल होने पर बिंदु 1 के संबंध में देखें CTE या व्युत्पन्न तालिकाओं के मध्यवर्ती भौतिककरण को बाध्य करने के लिए एक संकेत प्रदान करें . TOP(large_number) ... ORDER BY . का उपयोग बार-बार पुनर्मूल्यांकन करने के बजाय अक्सर परिणाम को स्पूल करने के लिए प्रोत्साहित कर सकता है।

भले ही वह काम करता हो लेकिन स्पूल पर कोई आंकड़े नहीं हैं।

अंक 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. गैर-प्राथमिक कुंजी के लिए विदेशी कुंजी

  2. CAST(DATETIME AS DATE) WHERE क्लॉज पर

  3. उदाहरण के साथ SQL जॉइन प्रकारों का अवलोकन

  4. एक वर्चर डेटा प्रकार को डेटाटाइम डेटा प्रकार में बदलने के परिणामस्वरूप एक आउट-ऑफ-रेंज मान त्रुटि हुई

  5. SQL सर्वर में डिफ़ॉल्ट मान संशोधित करें