MSDN'de Ortak Tablo İfadelerini Kullanma bölümünde gösterildiği gibi , bir CTE'yi şu şekilde tanımlayabilirsiniz:
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
ve şöyle kullanın:
SELECT <column_list> FROM expression_name;
Diyelim ki aşağıdaki 2 CTE'm var
with cte1 as(
select name from Table1
)
with cte2(name) as(
select name from Table1
)
Bir sorgu, iç sorgu aynı olduğundan her iki CTE için aynı sonuçları verir. Bu ikisi arasındaki tek fark, cte2'nin(name)
bildiriminde tanımlanmış sütun adına ( ) sahip olmasıdır .
Her iki CTE'yi yürüttüğümde, yürütme planında herhangi bir fark görmüyorum.
Sadece merak ediyorum:
- CTE tanımında herhangi bir sütun adı belirtmezsem ne fark eder?
- CTE oluştururken neden sütun adlarını belirtmem / vermemeliyim?
- Sorgu yürütme planını şans eseri etkiler mi? (Gördüğüm kadarıyla, hiçbir fark yaratmıyor.)