본문 바로가기
SQL SERVER

SQL SERVER INCLUDE Nonclustered index ( covered index)

by jiahn_21 2022. 5. 6.

이번 시간에는 Include index 에 대해 알아 보도록 하겠습니다. 

넌클러스터 인덱스와 클러스터 인덱스의 특징에 대해선 아래와 같이 이전 글을 참고부탁드립니다. 

 

2022.04.27 - [SQL SERVER] - SQL SERVER clustered index , nonclustered index

 

SQL SERVER clustered index , nonclustered index

오늘은 sql server의 Clustered index와 nonclustered index의 특징에 대해 알아보겠습니다. 인덱스란? 테이블의 조회 속도를 빠르게 하기 위한 수단 다만, 데이터가 변경 (update, delete , insert)되는 경우 인..

pdw5544.tistory.com

Include 인덱스 특징 
  • 인덱스 키가 아닌 열도 추가가 가능
  • 최대 16개의 키 열, 최대 900바이트의 인덱스 키 크기가 초과되는 것을 피할 수 있음
  • 검색 및 조회시 실제 데이터 페이지에 접근하지 않아, rid look up/ Key lookup을 방지
Include 인덱스 생성방법 
CREATE NONCLUSTERED INDEX [IX_SalesOrderDetail2_ProductID_include] ON SalesOrderDetail2
(
	[ProductID] ASC
) 
INCLUDE (SalesOrderID)
인덱스 페이지 확인
DBCC Ind(adventureWorks2019, SalesOrderDetail2, 2) 
DBCC PAGE(adventureWorks2019, 1, 26064,3)

리프페이지에 include 컬럼이 포함된 것을 확인 할 수 있다.

실행계획 및 통계 비교 
SELECT [SalesOrderID]
  FROM [AdventureWorks2019].dbo.SalesOrderDetail2 with(index= [IX_SalesOrderDetail2_ProductID_include])
  where ProductID = 777
  
SELECT [SalesOrderID]
  FROM [AdventureWorks2019].dbo.SalesOrderDetail2 with(index= [IX_SalesOrderDetail2_ProductID])
  where ProductID = 777

include 인덱스를 사용하면 RID LOOKUP, KEY LOOKUP 연산을 피할 수 있어 쿼리 비용이 감소한다

 

댓글