MSDN에서 공통 테이블 표현식 사용에 표시된대로 CTE를 다음과 같이 정의 할 수 있습니다.
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
다음과 같이 사용하십시오.
SELECT <column_list> FROM expression_name;
CTE 2 명을 팔로우한다고 가정 해 보겠습니다.
with cte1 as(
select name from Table1
)
with cte2(name) as(
select name from Table1
)
내부 쿼리가 동일하므로 쿼리는 두 CTE에 대해 동일한 결과를 출력합니다. 이 두 가지의 유일한 차이점은 cte2에(name)
선언에 정의 된 열 이름 ( ) 이 있다는 것 입니다.
두 CTE를 모두 실행할 때 실행 계획에 차이가 없습니다.
나는 단지 궁금하다 :
- CTE 정의에 열 이름을 지정하지 않으면 어떤 차이가 있습니까?
- CTE를 생성 할 때 열 이름을 지정해야하는 이유는 무엇입니까?
- 우연히 쿼리 실행 계획에 영향을 줍니까? (내가 아는 한 아무런 차이가 없습니다.)