본 포스트는 Microsoft TechNet의 [논리 및 물리 연산자 참조]내용을 참고하여 정리한 내용이다.
Clustered Index Scan 연산자는 물리 연산자로써, 쿼리 실행 계획의 Argument 열에 지정된 클러스터형 인덱스를 검색한다.
선택 사항인 WHERE:() 조건자가 있는 경우에는 조건자에 부합되는 행만 반환된다.
Argument 열에 ORDERED 절이 있으면 쿼리 프로세서가 행의 출력이 클러스터형 인덱스에 의해 정렬되는 순서로 반환한다. ORDERED 절이 없으면 저장소 엔진은 출력을 정렬하지 않고 최적의 방법으로 인덱스를 검색합니다.
Clustered Index Scan 은 Table Scan 과 같다고 보면 된다. 왜냐하면, Clustered Index의 리프 레벨 페이지에는 실제 데이터가 저장되어 있기 때문이다. 우리가 흔히 생각하는 인덱스를 이용한 검색의 실행 계획 연산자는 Index Seek이다.
그리고, 당연히 해당 테이블에 클러스터형 인덱스가 정의되어 있을 경우에만 유효하다.
그래프 실행 계획 아이콘
Clustered Index Scan 연산자의 예
이해를 돕기 위해 dbo.ClusteredIndexScanTest 이름으로 테이블을 작성하고 col1에 Clustered Index를 작성하겠다.
CREATE TABLE dbo.ClusteredIndexScanTest
Declare @i int SET @i = 1
WHILE @i <= 200 BEGIN INSERT INTO dbo.ClusteredIndexScanTest(col2) values ('Data'); SET @i = @i + 1 END GO
|
이제 Clustered Index를 이용하여 검색해 보겠다.
SET NOCOUNT ON
SET SHOWPLAN_ALL ON
SELECT * FROM dbo.ClusteredIndexScanTest
SET SHOWPLAN_ALL OFF |
텍스트 실행 계획
SttText |
SELECT * FROM dbo.ClusteredIndexScanTest |--Clustered Index Scan(OBJECT:([TestDB].[dbo].[ClusteredIndexScanTest].[ClusteredIndexScanTest_PK])) |
그래픽 실행 계획
|