जैसा कि MSDN पर कॉमन टेबल एक्सप्रेशंस का उपयोग करके दिखाया गया है , आप एक CTE को इस प्रकार परिभाषित कर सकते हैं:
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
और इसका उपयोग करें:
SELECT <column_list> FROM expression_name;
मान लीजिए कि मेरे पास 2 सीटीई हैं
with cte1 as(
select name from Table1
)
with cte2(name) as(
select name from Table1
)
एक क्वेरी दोनों सीटीई के लिए समान परिणाम उत्पन्न करता है क्योंकि आंतरिक क्वेरी समान है। इन दोनों के बीच एकमात्र अंतर यह है कि cte2 का स्तंभ नाम ( (name)
) इसकी घोषणा में परिभाषित है।
जब मैं दोनों सीटीई निष्पादित करता हूं, तो मुझे निष्पादन योजना में कोई अंतर नहीं दिखता है।
मैं सिर्फ जानने के लिए उत्सुक हूं:
- यदि मैं CTE परिभाषा में कोई कॉलम नाम निर्दिष्ट नहीं करता तो क्या फर्क पड़ता है?
- CTE बनाते समय मुझे कॉलम के नाम क्यों नहीं निर्दिष्ट करने चाहिए?
- क्या यह किसी भी संयोग से क्वेरी निष्पादन योजना को प्रभावित करता है? (जहां तक मैंने देखा है, इससे कोई फर्क नहीं पड़ता।)