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)
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 |
댓글 영역