오늘은 sql server의 Clustered index와 nonclustered index의 특징에 대해 알아보겠습니다.
인덱스란?
테이블의 조회 속도를 빠르게 하기 위한 수단
다만, 데이터가 변경 (update, delete , insert)되는 경우 인덱스도 함께 조정이 필요하여 성능이 저하될 수 있음.
아래 그림과 같이 루트/중간/리프 페이지로 구성되어 있으며, 아래 페이지는 89번 페이지를 탐색하는 과정을 간략하게 그려보았다.
클러스터 인덱스란?
- 클러스터 인덱스란 리프페이지 = 데이터페이지인 특징을 갖고 있다.
- 그러므로 클러스터 인덱스의 키를 기준으로 데이터가 정렬되어 있다.
- 테이블의 한개만 설정이 가능하다.
- 조회 속도가 빠르다.
넌클러스터 인덱스란?
- 키 기반으로 데이터가 정렬되지 않는다.
- 넌클러스터 인덱스 페이지에는 리프 페이지에 클러스터 키값 혹은 힙테이블의 RID( 파일ID, 페이지번호, 페이지 행번호) 가 기록되어 있다.
- 한 개의 테이블에 여러 개의 인덱스가 생성이 가능하다.
- RID ROOKUP이 발생하면 속도가 상대적으로 느리다. (INCLUDE 등을 사용하여 발생을 줄일 수 있다. )
클러스터 인덱스 대비 넌클러스터 인덱스장단점
- 여러개 만들수 있다.
- Include 옵션을 사용하여 크기가 큰 컬럼도 처리가 가능하다.
- 별도의 저장공간이 필요하다
인덱스 탐색방법 및 페이지 확인하는 방법은 이전 글을 참조하면 좋을 것 같습니다.
2022.02.12 - [SQL SERVER] - SQL SERVER 인덱스 탐색방법 (INDEX SEEK, INDEX SCAN)
2022.02.13 - [SQL SERVER] - 인덱스 페이지 확인하는 방법 (FT. DBCC IND, DBCC PAGE)
'SQL SERVER' 카테고리의 다른 글
SQL SERVER INCLUDE Nonclustered index ( covered index) (0) | 2022.05.06 |
---|---|
sql sever 메모리 최적화 테이블 만드는 방법 따라하기 ( Memory Optimized table) (0) | 2022.04.27 |
SQL SERVER 비용이 높은 쿼리 보기 (fT. dm_exec_query_stats) (0) | 2022.02.20 |
SQL SERVER 프로파일 쿼리로 실행하기 (0) | 2022.02.16 |
SQL SERVER 데드락(lock) 조회하기 (0) | 2022.02.14 |
댓글