2016-08-30 5 views
2

SQL Management Studio에서 쿼리를 실행 계획을 확인했습니다. 일부 비 클러스터형 인덱스 스캔 단계는 인덱싱 된 조인 된 열 대신 테이블의 PK 열을 반환합니다. 예 : 표 A에MS SQL 실행 계획의 사용되지 않은 열

select a.c10, b.c20 
from a inner join b on a.c11 = b.c21 
where a.c12 = 23 

인덱스 :

create unique nonclustered index ix_a_1 on a (a.c12 asc) include (a.c13, a.c14) 

쿼리 계획 보여준다

index seek, nonclustered, ix_a_1 , output list: a.primary_key_col 

열 a.primary_key_col 쿼리에 사용되지 않는다. 왜 이것이 출력 목록에 포함 된 유일한 열입니까?

답변

6

PK 열은 c10 및 c11 열을 가져 오기 위해 클러스터 된 인덱스 (PK로 가정)를 조사하는 데 필요합니다. 이것은 "키 조회"로 알려져

"를 포함하는"되도록이

create nonclustered index ix_a_gbn on a (c12, c11) include (c10, c13, c14) 

Some background reading from Simple Talke via Google

을 시도 만들거나 클러스터되지 않은 인덱스를 변경하여 제거 할 수 있습니다