2013-10-09 1 views
1

실행 계획에 다소 익숙합니다. 나는 실제 데이터 행이 인덱스 트리의 리프 레벨에 포함되어 있기 때문에 클러스터 된 인덱스가 훨씬 빠르다는 것을 항상 이해해 왔지만 클러스터되지 않은 것은 인덱스 된 컬럼 값과 나머지 행 데이터의 위치에 대한 포인터 만 포함합니다. 따라서 클러스터되지 않은 클러스터 된 IO보다 더 많은 IO가 있습니다.이 클러스터 된 인덱스가 SQL 서버의 클러스터되지 않은 클러스터 된 인덱스보다 더 많은 비용을받는 이유

테스트를 위해 EmployeeID (첫 번째 열) 인 1,000,000 개의 레코드 테이블을 기본 키로 사용하고 같은 필드에 클러스터되지 않은 인덱스를 추가했습니다. 그런 다음 쿼리 힌트를 사용하여 사용되는 각 인덱스의 결과를 비교했습니다.

결과는 클러스터되지 않은 클러스터보다 IO 및 쿼리 비용 (배치 대비)이 더 많음을 보여줍니다. 누군가 설명해 주시겠습니까?

답변

4

테스트 쿼리의 경우 인덱스는 이미 결과 집합에 필요한 모든 열을 포함하고 있으므로 "포함"인덱스입니다. 따라서 실제 테이블에 대한 추가 읽기는 필요하지 않습니다. 그리고 색인이 더 작기 때문에 (더 적은 페이지), 접근은 더 빠릅니다.
클러스터 된 인덱스는 실제로 인덱스 자체로 테이블 자체입니다. 열이 더 많으므로 더 많은 페이지 읽기가 필요합니다.

관련 문제