본문 바로가기
MySQL

데이터베이스 인덱스란? 클러스터 인덱스와 넌클러스터 인덱스 개념 차이점

by parkjp 2023. 11. 3.

 

 

인덱스 (Index)란?

데이터를 빠르게 검색할 수 있도록 테이블에 대한 동작 속도를 높여주는 자료 구조를 일컫는 말이다.

인덱스는 테이블 내의 1개의 컬럼, 또는 여러 개의 컬럼을 이용하여 생성될 수 있다.

우리가 책으로 된 두꺼운 사전을 보면 빠르게 찾을 수 있도록 홈이 파여져 있거나 색이 칠해져 있는 것을 볼 수 있는데 이런 것에 비유할 수 있다. 다르게 말하면 색인이라고도 볼 수 있다.

 

클러스터 인덱스 (Clustered Index)

물리적으로 행을 재배열하고 테이블당 1개의 클러스터 인덱스만 존재할 수 있다.

또한 데이터 입력, 수정, 삭제 시 항상 정렬 상태를 유지하는데 이렇기 때문에 검색 속도가 넌클러스터 인덱스보다 빠르다.

단, 데이터의 입력, 수정, 삭제 속도는 느리다.

테이블 데이터가 자주 업데이트 되지 않는 경우, 항상 정렬된 방식으로 범위 또는 그룹화 하여 조회를 하는 경우,

대부분 읽기 작업만을 위한 테이블인 경우 쓰일 수 있다.

 

 

넌클러스터 인덱스 (NonClustered Index)

테이블 레코드의 원본은 정렬되지 않고 별도의 인덱스 페이지를 생성하여 정렬된다.

테이블 당 약 240개의 인덱스를 생성할 수 있다.

검색 속도는 클러스터 인덱스보다 느리지만 데이터의 입력, 수정, 삭제는 더 빠르다.

조건 절이나 테이블간의 조인을 활용하여 테이블을 조회하는 경우, 데이터가 자주 업데이트 되는 경우, 특정 컬럼이 쿼리에서 자주 사용되는 경우 쓰일 수 있다.

반응형