source

기본 키를 커버링 인덱스에 포함해야 합니까?

manycodes 2023. 7. 5. 20:51
반응형

기본 키를 커버링 인덱스에 포함해야 합니까?

그것이 좋은 것인가, 나쁜 것인가, 아니면 그것이 조금이라도 중요합니까?INCLUDE커버링 인덱스의 기본 키?

CREATE NONCLUSTERED INDEX index_name_here ON dbo.table_name_here
(column_to_index_here) 
INCLUDE (primary_key_column,other_column_here)
WITH( STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, --<default junk from SSMS
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

어차피 PK는 지수에 들어가니까 상관없다고 생각합니다.

나의primary_key_column클러스터화되었지만 비클러스터된 기본 키에 대한 정보도 감사합니다.

에 가입할 예정입니다.dbo.table_name_here에서column_to_index_here의 다른 테이블에 연결됩니다.primary_key_column그리고.other_column_here.

PK에서 클러스터링하는 경우에는 문제가 되지 않습니다. 모든 비클러스터형 인덱스에는 해당 행에 대한 클러스터형 인덱스 키가 정의의 일부로 포함되어 있으므로 SQL Server는 이를 무시합니다.

인덱스에 추가 공간을 사용하지 않지만 정의에 포함하는 것은 중복됩니다.

PK가 클러스터된 인덱스에 포함되지 않은 경우 인덱스를 사용하는 동일한 쿼리의 일부로 해당 필드를 검색해야 하는 경우에만 PK를 포함합니다.

또한 당신이 할 때 명심하세요.INCLUDE인덱스의 필드(리프 노드가 아닌 노드에 없음). 즉, 인덱스가 해당 값에 대해 정렬되지 않습니다.

어쨌든 PK는 인덱스에 있을 것이기 때문입니다.

PK가 해당 문을 가진 다른 인덱스에 있다고 가정하면 이 인덱스에 기본 키를 포함할지 여부는 쿼리에서 기본 키를 선택할지 여부에 따라 결정됩니다.선택하려면 인덱스에 포함하고, 선택하지 않은 경우에는 제외합니다.PK에 클러스터된 테이블에 대해서도 @JNK 응답을 참조하십시오.

언급URL : https://stackoverflow.com/questions/5328179/should-i-include-the-primary-key-in-a-covering-index

반응형