11

क्या सीटीई tempdb में किसी भी स्थान का उपयोग करते हैं या क्या यह विशेष रूप से स्मृति का उपयोग करता है?क्या सीटीई tempdb में किसी भी स्थान का उपयोग करते हैं?

मैंने दोनों mssql 2005 और 2008 के साथ प्रश्न को टैग किया है क्योंकि मैं दोनों का उपयोग करता हूं।

+0

प्रश्नों को निश्चित रूप से में नोट किया गया है। "क्वेरी द्वारा आवश्यक स्थान" पर भी नीचे दिया गया अनुभाग देखें। –

उत्तर

11

मैं कॉपी करने के लिए नहीं/पेस्ट MSDN

यह कोई फर्क नहीं पड़ता की कोशिश करेंगे।

एक सीटीई क्वेरी निष्पादन से स्वतंत्र है: यह केवल एक भाषा निर्माण है। इसके बारे में अच्छी तरह से व्युत्पन्न तालिका या सबक्वायरी के रूप में सोचें।

इसका मतलब है कि रिकर्सिव सीटीई को छोड़कर (बाद में देखें), सभी सीटीई को इनलाइन कोड किया जा सकता है। यदि आप एक बार सीटीई कोड का उपयोग करते हैं, तो यह पठनीयता के लिए है। यदि आप सीटीई का दो या दो से अधिक उपयोग करते हैं, तो यह रक्षात्मक है: आप कोई गलती नहीं करना चाहते हैं और व्युत्पन्न तालिका प्रत्येक उपयोग को अलग करती है।

जहां एक सीटीई दो या उससे अधिक का उपयोग किया जाता है, तो वह कोड दो या दो बार निष्पादित किया जाएगा। इसे एक बार निष्पादित नहीं किया जाएगा और tempdb में कैश किया जाएगा।

सारांश: यह कोड हो सकता है जैसे यह हो सकता है या नहीं।

नोट: एक recursve CTE बस एक डेर के अंदर एक एक व्युत्पन्न तालिका के अंदर एक व्युत्पन्न तालिका के अंदर एक व्युत्पन्न तालिका के अंदर एक व्युत्पन्न टेबल है ... तो एक ही लागू होता है।

आप इसे Tony Rogerson's article में देख सकते हैं। कोडड इनलाइन अगर वैसे भी tempdb का उपयोग होगा। उन्होंने यह भी कहा गया है कि एक अस्थायी तालिका का उपयोग कर "मैक्रो" विस्तार मैं आपकी जानकारी के ऊपर

समझाया की वजह से बेहतर हो सकता है: एक ही दृश्यों पर लागू होता। बस मैक्रोज़।

+0

+1 कोई प्रतिलिपि/पेस्ट उत्तर के लिए नहीं। –

7

एक आम तालिका अभिव्यक्ति एक अस्थायी परिणाम सेट के रूप में है कि एक एकल का चयन करें, सम्मिलित करें के निष्पादन के दायरे के भीतर परिभाषित किया गया है के बारे में सोचा जा सकता है, अपडेट करें, हटाएं या दृश्य बयान बनाएँ। जब सामान्य तालिका अभिव्यक्ति क्वेरी के लिए क्वेरी योजना मध्यवर्ती क्वेरी परिणामों को सहेजने के लिए स्पूल ऑपरेटर का उपयोग करती है, तो डेटाबेस इंजन इस ऑपरेशन का समर्थन करने के लिए tempdb में एक कार्य तालिका बनाता है।

source

4

MSDN से: http://msdn.microsoft.com/en-us/library/ms345368.aspx

एक आम तालिका अभिव्यक्ति एक अस्थायी परिणाम सेट है कि एक ही चयन के निष्पादन के दायरे के भीतर परिभाषित किया गया है के बारे में सोचा जा सकता है, सम्मिलित करें, अपडेट करें, हटाएं, या दृश्य कथन बनाएँ।

एक आम तालिका अभिव्यक्ति क्वेरी के लिए क्वेरी योजना मध्यवर्ती क्वेरी परिणामों को बचाने के लिए एक स्पूल ऑपरेटर उपयोग करता है, डेटाबेस इंजन इस कार्यवाही का समर्थन करने के लिए tempdb में काम की मेज बनाता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^