반응형
SQL Server 에서는 인덱스를 클러스터 인덱스와 넌클러스터 인덱스로 나눌 수 있습니다.
이 둘의 가장 큰 차이점은 리프 페이지 구조인데요.
각각의 특징을 살펴보도록 하겠습니다.
클러스터 인덱스
1. 인덱스의 리프 페이지가 곧 데이터 페이지이다.
2. 이 데이터 페이지에 있는 데이터는 클러스터 인덱스의 키 컬럼으로 모두 정렬되어 있다.
아래와 같이 클러스터 인덱스를 만들어보자
CREATE CLUSTERED INDEX IDX__CUST_TABLE__TEST ON dbo.CUST_TABLE(cust_no, svc_nation_cd)
마지막 리프 페이지에는 인덱스 키 컬럼 외 나머지 컬럼 정보가 저장됩니다.
넌클러스터 인덱스
넌클러스터 인덱스의 리프 페이지 구조는 해당 테이블에 클러스터 인덱스가 있냐 없냐에 따라서 또 달라집니다
클러스터 인덱스가 없을 때의 넌클러스터 인덱스
클로스터 인덱스가 없는 테이블을 힙 테이블이라고 합니다.
힙 테이블에 넌클러스터 인덱스를 생성하면 인덱스는 리프 페이지에 rid 값 정보를 저장하며
컬럼 정보가 필요하다면 SQL Server는 rid 값을 해석하여 해당 로우의 위치를 찾아냅니다.
클러스터 인덱스가 있을 때의 넌클러스터 인덱스
클러스터 인덱스가 있는 테이블에 넌클러스터 인덱스를 생성하면
넌클러스터 인덱스의 리프 페이지에는 rid 값 대신 클러스터 인덱스의 키 값을 갖게 됩니다.
이 때는 컬럼 정보가 필요하다면 rid 값을 해석하여 테이블 로우를 찾아가는 게 아니라
리프 페이지에 저장된 클러스터형 인덱스의 키 값으로 다시 클러스터 인덱스를 탐색하여 필요한 칼럼 값을 얻습니다.
반응형
'IT 이야기 > DB' 카테고리의 다른 글
[SQLP 시험대비 요약/단답형] 소프트 파싱과 하드 파싱 (2) | 2022.09.10 |
---|---|
[DB 기술면접] 해시 조인(Hash Join)이란 무엇인가 (1) | 2022.09.09 |
[MSSQL] INSERT문 다양한 사용법 (0) | 2022.09.07 |
[MSSQL] 테이블 및 컬럼 디스크립션(Description) 추가, 수정, 조회 (0) | 2022.09.06 |
[MSSQL] 데이터베이스 정렬 방식 (COLLATE, COLLATION) (0) | 2022.09.05 |