본문 바로가기
SQL SERVER

SQL SERVER clustered index , nonclustered index

by jiahn_21 2022. 4. 27.

오늘은 sql server의 Clustered index와 nonclustered index의 특징에 대해 알아보겠습니다. 

 

인덱스란?

테이블의 조회 속도를 빠르게 하기 위한 수단

다만, 데이터가 변경 (update, delete , insert)되는 경우 인덱스도 함께 조정이 필요하여 성능이 저하될 수 있음. 

아래 그림과 같이 루트/중간/리프 페이지로 구성되어 있으며, 아래 페이지는 89번 페이지를 탐색하는 과정을 간략하게 그려보았다. 

인덱스 도식도

 

클러스터 인덱스란? 
  1. 클러스터 인덱스란 리프페이지 = 데이터페이지인 특징을 갖고 있다. 
  2. 그러므로 클러스터 인덱스의 키를 기준으로 데이터가 정렬되어 있다. 
  3. 테이블의 한개만 설정이 가능하다. 
  4. 조회 속도가 빠르다. 

CLUSTERED INDEX

넌클러스터 인덱스란?

 

  1. 키 기반으로 데이터가 정렬되지 않는다. 
  2. 넌클러스터 인덱스 페이지에는 리프 페이지에 클러스터 키값 혹은 힙테이블의 RID( 파일ID, 페이지번호, 페이지 행번호) 가 기록되어 있다. 
  3. 한 개의 테이블에 여러 개의 인덱스가 생성이 가능하다. 
  4. RID ROOKUP이 발생하면 속도가 상대적으로 느리다. (INCLUDE 등을 사용하여 발생을 줄일 수 있다. )

NONCLUSTERED INDEX

 

클러스터 인덱스 대비 넌클러스터 인덱스장단점
  1. 여러개 만들수 있다. 
  2. Include 옵션을 사용하여 크기가 큰 컬럼도 처리가 가능하다. 
  3. 별도의 저장공간이 필요하다 

인덱스 탐색방법 및 페이지 확인하는 방법은 이전 글을 참조하면 좋을 것 같습니다. 

 

2022.02.12 - [SQL SERVER] - SQL SERVER 인덱스 탐색방법 (INDEX SEEK, INDEX SCAN)

 

SQL SERVER 인덱스 탐색방법 (INDEX SEEK, INDEX SCAN)

오늘은 SQL SERVER의 인덱스 탐색방법에 대해 포스팅 하고자 합니다. INDEX SCAN 인덱스의 리프 페이지를 모두 스캔하는 방식으로 수행됩니다. 흔히 말하는 풀스캔으로 이해하시면 좋을 것 같습니다.

pdw5544.tistory.com

2022.02.13 - [SQL SERVER] - 인덱스 페이지 확인하는 방법 (FT. DBCC IND, DBCC PAGE)

 

인덱스 페이지 확인하는 방법 (FT. DBCC IND, DBCC PAGE)

이번시간엔 인덱스 파일을 확인 하는 방법에 대해 포스팅 하고자 합니다. 이전과 같이 SQL SERVER에서 제공하고 있는 'Northwind' 샘플 DB를 통해 진행하겠습니다. 인덱스 ID 확인 SELECT * FROM SYS.indexes WHE

pdw5544.tistory.com

참고 : https://docs.microsoft.com/ko-kr/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15

 

 

댓글