CTE: CTE आम टेबल भाव के लिए खड़ा है। इसे SQL सर्वर 2005 के साथ पेश किया गया था। इसका उपयोग अस्थायी अड्डों पर जटिल उप-क्वेरी के परिणाम को संग्रहीत करने के लिए किया जाता है। इसका जीवन वर्तमान क्वेरी तक ही सीमित है। यह कथन के साथ प्रयोग करके परिभाषित किया गया है। यह मुख्य रूप से रिकर्सिव कॉल के लिए उपयोग किया जाता है।
उदाहरण
;with myCTE as
(
select ParentLevel, ParentID, ChildID
from MHA
where ChildID = 1
UNION ALL
select MHA.ParentLevel, MHA.ParentID, MHA.ChildID
from MHA
inner join myCTE on MHA.ParentID = myCTE.ChildID
where MHA.ParentID <> 0
)
(त्रुटि)
select top (5) * from myCTE
तो ऊपर के उदाहरण में, मैं myCTE रूप CTE नाम बनाने के लिए है, यह है कि केवल ऊपर क्वेरी में उपयोग किया जा सकता है (मैं यह कर सकते हैं उपर्युक्त क्वेरी के बाहर myCTE का उपयोग न करें)
टेम्प: इसका उपयोग अस्थायी अड्डों पर क्वेरी के परिणाम को संग्रहीत करने के लिए भी किया जाता है। लेकिन इसका जीवन वर्तमान सत्र तक ही सीमित है। इसे # का उपयोग करके परिभाषित किया गया है। यह रिकर्सिव का समर्थन नहीं करता है।
उदाहरण:
select * into #tempTable from MHA
ऊपर क्वेरी में मैं अस्थायी टेबल बनाया है, अब मैं इसे अस्थायी तालिका बाहर इस क्वेरी के पक्ष लेकिन साथ सत्र में उपयोग कर सकते हैं। नीचे
(कोई त्रुटि)
select top (5) * from #tempTable
डीबीए साइट से
स्रोत
2016-02-16 06:10:57
[क्या एक CTE और एक अस्थायी तालिका के बीच का अंतर है?] (http://dba.stackexchange.com/q/13112/ देखें 36 9 0) –
मुझे प्रदर्शन मतभेदों के बारे में बहुत कुछ पता नहीं है, लेकिन सीटीई सरल लूपिंग और रिकर्सन के लिए अनुमति देता है, तो टेम्पलेट टेबल आसान होते हैं यदि कोई क्वेरी आउटपुट कई बार एक्सेस किया जाएगा और फिर से चलने का समय बर्बाद हो जाएगा। –
वे अलग-अलग चीजें हैं, और वास्तव में यह पाठ्यक्रमों के लिए घोड़े हैं। कौन सा सबसे अच्छा होगा आपके सटीक परिदृश्य पर निर्भर करेगा। आपका प्रश्न 'टेबल के बजाय दृश्यों का उपयोग करने के क्या फायदे हैं' से कम अस्पष्ट नहीं है? – GarethD