상세 컨텐츠

본문 제목

Clustered, Non-Clustered Index

똑똑한 개발/Algorithm 과 Data Structure

by 성댕쓰 2022. 2. 5. 21:17

본문

Index란 임의의 규칙으로 저장된 데이터를 가리키는 어떠한 값이다. 주로 검색할 때 활용한다.

 

데이터 베이스 Index의 종류에는 Clustered, Non-Clustered Index가 있다.

Clustered, Non-Clustered Index를 이해하고 차이에 대해 알아보자.

 


1. Clustered Index


Clustered Index는 해당 Index가 참조하는 칼럼을 기준으로 데이터를 정렬시킨다.

 

위 테이블은 ID 칼럼이 Clustered Index이다.

만약, 그림처럼 2번 넬 Row를 추가하면 기존 테이블에서 2번 이후 Row를 밀어내고 넬을 추가한 뒤 ID를 새로 부여할 것이다.

이처럼 Index가 다른 칼럼의 정보도 함께 이동시키기 때문에 Clustered Index라 부른다. 데이터 베이스는 Primary Key로 만든 칼럼에 Clustered Index를 만든다. 테이블 정렬은 테이블 당 하나의 칼럼에서만 수행해야 하므로 Clustered Index는 1 개만 생성할 수 있다.  데이터가 군집, 정렬되어 있어 조회가 빠르지만 새로운 데이터를 Insert할 때 많은 비용이 발생한다.



2. Non-Clustered Index


Non-Clustered Index는 테이블 데이터와 함께 테이블에 저장되지 않고 별도의 장소에 저장된다. 그리고 테이블을 정렬하지 않는다. Clustered Index가 테이블 당 1개만 가질 수 있었다면 Non-Clustered Index는 여러 개를 생성할 수 있다.

Clustered Index는 인덱스 키 값과 데이터 행을 가리키는 포인터가 존재한다. Clustered Index 처럼 데이터 Insert할 때 많은 비용이 들지 않을 수도 있다. 그러나 Index를 생성해야 하므로 비용이 발생하고 설계에 따라 큰 비용이 발생할 수도 있다.



3. 정리


Clustered Index Non Clustered Index
테이블 당 1개 여러 개
테이블을 정렬함. 테이블 정렬하지 않음.
별도의 공간 필요 없음(테이블에 저장) 별도의 공간 필요
검색 속도가 Non Clustered Index보다 빠름 -
추가 Row Insert할 때 비용이 크게 들 수 있음. 순서 유지 때문에 발생하는 비용 없음. 단, Index 생성 비용 발생

참조 :

Clustered vs NonClustered (index 개념) - 오늘코딩 (gwang920.github.io)

[10분 테코톡] 👨‍🏫안돌의 INDEX - YouTube

'똑똑한 개발 > Algorithm 과 Data Structure' 카테고리의 다른 글

Process 와 Thread  (0) 2022.02.06
가상 메모리 기본  (0) 2022.02.05
Database Index 알아보기  (0) 2022.02.05
SOLID 원칙  (0) 2022.02.03
바이트 오더링(Byte Ordering)  (0) 2022.02.02

관련글 더보기

댓글 영역