반응형

SQL Server 2005에는 키가 아닌 열을 포함한 비클러스터형 인덱스를 생성할 수가 있습니다. 키가 아닌 열을 포함한 인덱스, 포괄 열이 있는 인덱스는 인덱스 커버링 가능성을 높여 주기 때문에 쿼리의 성능을 개선시키는데 도움이 됩니다.
참고로 인덱스 커버링이랑
쿼리 옵티마이저가 테이블 데이터나 클러스터형 인덱스의 데이터를 참조하지 않고 비클러스터형 인덱스의 값만을 참조하여 원하는 데이터를 얻는 것을 말합니다. 이와 같이 데이터나 클러스터형 인덱스를 참조하지 않게 되면 적은 I/O로 원하는 결과를 얻게 되므로 성능적인 측면에서 도움이 됩니다.

포괄 열이 있는 인덱스는 다음과 같은 장점이 있습니다.

 

?         인덱스 열로 허용되지 않는 데이터 형식을 포괄 열에는 포함시킬 수 있습니다. 포괄 열 인덱스에는 text, ntext, image 데이터 형식을 제외한 모든 데이터 형식이 허용됩니다.

?         비클러스터형 인덱스를 구성하는 인덱스 열의 개수 또는 인덱스 키의 크기의 계산에서 제외됩니다.


다음 예제에서와 같이 CREATE INDEX 문에 INCLUDE 절을 추가하여 포괄 열 인덱스를 생성할 수 있습니다. 

[따라하기] 포괄 열을 추가한 인덱스 생성하기

USE AdventureWorks;

GO

-- 포괄 열을 추가한 인덱스 생성

CREATE NONCLUSTERED INDEX IX_Address_PostalCode

    ON Person.Address (PostalCode)

    INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);

GO

-- 포괄 인덱스로 인해 성능이 향상되는 쿼리

SELECT AddressLine1, AddressLine2, City, StateProvinceID, PostalCode

FROM Person.Address

WHERE PostalCode BETWEEN N'98000' and N'99999';

GO

 

반응형

+ Recent posts