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

क्यों CTE (कॉमन टेबल एक्सप्रेशन) कुछ मामलों में SQL सर्वर में अस्थायी तालिकाओं की तुलना में प्रश्नों को धीमा कर देता है

उत्तर सीधा है।

SQL सर्वर CTE को अमल में नहीं लाता है। यह उन्हें इनलाइन करता है, जैसा कि आप निष्पादन योजनाओं से देख सकते हैं।

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

क्या स्पष्ट अस्थायी तालिकाओं में मध्यस्थ परिणामों का स्पष्ट भौतिककरण तेजी से होता है, यह क्वेरी पर निर्भर करता है।

जटिल प्रश्नों में मध्यस्थ डेटा को अस्थायी तालिकाओं में लिखने और पढ़ने के ओवरहेड को अधिक कुशल सरल निष्पादन योजनाओं द्वारा ऑफसेट किया जा सकता है जो ऑप्टिमाइज़र उत्पन्न करने में सक्षम है।

दूसरी ओर, Postgres में CTE एक "ऑप्टिमाइज़ेशन फ़ेंस" है और इंजन विधेय को CTE सीमा के पार नहीं धकेल सकता है।

कभी एक रास्ता बेहतर होता है तो कभी दूसरा। एक बार जब क्वेरी जटिलता निश्चित सीमा से आगे बढ़ जाती है तो एक ऑप्टिमाइज़र डेटा को संसाधित करने के सभी संभावित तरीकों का विश्लेषण नहीं कर सकता है और उसे किसी चीज़ पर समझौता करना पड़ता है। उदाहरण के लिए, तालिकाओं में शामिल होने का क्रम। चुनने के लिए तालिकाओं की संख्या के साथ क्रमपरिवर्तन की संख्या तेजी से बढ़ती है। ऑप्टिमाइज़र के पास योजना बनाने के लिए सीमित समय होता है, इसलिए जब सभी सीटीई इनलाइन होते हैं तो यह खराब विकल्प बना सकता है। जब आप जटिल क्वेरी को मैन्युअल रूप से छोटे सरल प्रश्नों में तोड़ते हैं, तो आपको यह समझने की आवश्यकता होती है कि आप क्या कर रहे हैं, लेकिन ऑप्टिमाइज़र के पास प्रत्येक साधारण क्वेरी के लिए एक अच्छी योजना बनाने का बेहतर मौका होता है।



  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 सर्वर 2008 - स्प्लिट

  2. किसी वेबसाइट से URL निकालें?

  3. दुनिया में सबसे लोकप्रिय डेटाबेस प्रबंधन प्रणाली

  4. केवल SQL का उपयोग करके SQL सर्वर 2005 छवि फ़ील्ड में चित्र सम्मिलित करें

  5. SQL सर्वर में चेंज डेटा कैप्चर (सीडीसी) टेबल्स से हिस्ट्री या ऑडिट व्यू कैसे बनाएं - SQL सर्वर ट्यूटोरियल