아카이브

Clustered Index VS Non-Clustered Index 본문

데이터베이스

Clustered Index VS Non-Clustered Index

주멘이 2018. 6. 9. 16:16


1. 차이, 크기

- Clustered Index는 물리적으로 행을 재배열

- ex)    create table test_index{

log_data char(8) not null,
id char(1) not null,
.....

primary key(log_data,id)

}


INSERT                                        

20130611 a data          
20130612 a data
20130612 c data
20130612 b data
20130608 c data


SELECT *

20130608 c data
20130611 a data
20130612 a data
20130612 b data
20130612 c data


☞ PK를 기준으로 물리적으로 행을 재배열


- Non-Clustered Index는 물리적으로 재배열 X → 별도의 공간에 Index TABLE을 생성하여 정렬한다

☞ Non-Clustered Index

8을 검색하는 과정

1. 인덱스 3페이지는 7로 시작 -> 인덱스 3페이지로 접근

2. 인덱스 3페이지 안에 8의 데이터 페이지 위치와 인덱스가 저장되있는 부분을 참조 8 (3, 2)

3. 데이터 3페이지의 2번째에 저장되어있는 8을 검색


Clustered Index

- 이미 데이터가 정렬되어 있는 상태로 저장되기 때문에 Leaf level의 Index TABLE이 불필요

Non-Clustered Index보다 DB용량을 덜 차지함


8을 검색하는 과정

1. 데이터 3페이지는 7로 시작 -> 3페이지로 접근

2. 데이터 3페이지에서 8을 검색



2. 선택도

- 테이블의 전체 데이터 집합 중에 특정 조건에 의해 데이터가 걸러지는 비율

☞ Clustered Index

- EX) 7, 8, 9 탐색 시 한 번의 접근으로 추출할 수 있다 (3페이지에 7~9가 저장되어 있음)

- 선택도 범위가 30% 이내일 때 효율적

Non - Clustered Index

- EX) 7, 8,9 탐색 시 우선 Index 3페이지로 접근 후 7(2-1), 8(3-2), 9(3-3) 이므로 2번의 접근이 필요

- 선택도 범위가 3% 이내일 때 효율적


3. 최대 개수

☞ Clustered Index

- 물리적으로 정렬되어 있는 상태이기 때문에 단 1개만 생성 가능

- 2개 라면? 데이터가 꼬인다

☞ Non - Clustered Index

- Index TABLE을 별도로 생성하여 정렬하기 때문에 249개까지 생성할 수 있다.

- EX) 전공책 뒤에 색인에서 '가나다', 'ABC' Index 



출처

http://lng1982.tistory.com/144

http://lssang.tistory.com/entry/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%93%9C-%EC%9D%B8%EB%8D%B1%EC%8A%A4-%EB%84%8C%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%93%9C-%EC%9D%B8%EB%8D%B1%EC%8A%A4






'데이터베이스' 카테고리의 다른 글

INDEX 란?  (0) 2018.06.18
DDL, DML, DCL  (0) 2018.06.18
Stored Procedure ( 저장 프로시저 )  (0) 2018.06.09
무결성(Integrity)  (0) 2018.06.09
DBMS  (0) 2018.06.06