인덱스 종류
인덱스를 구성하는 컬럼 수에 따라 단일 인덱스, 복합 인덱스로 구분된다.
- 단일 인덱스(Single column index) : 인덱스에 하나의 컬럼만 사용
- 복합 인덱스(Composite index) : 인덱스에 두 개 이상의 컬럼을 사용
단일 인덱스는 하나의 컬럼만으로 구성한다. 주로 PK 속성이 단일 컬럼일 때 사용한다. 반면에 복합 인덱 스는 여러 개의 컬럼으로 구성한다. 잘 만들어진 하나의 복합 인덱스는 여러개의 인덱스를 대신할 수 있 으며, 여러 SQL의 성능을 커버할 수 있다. 복합 인덱스는 멀티 컬럼 인덱스 또는 결합 인덱스라고도 한다.
또 다른 방법으로 인덱스를 구성하는 컬럼 값들의 중복 허용 여부에 따라 유니크 인덱스, 비유니크 인덱스로 구분된다.
- 유니크 인덱스(Unique index) : 인덱스 구성 컬럼들 값에 중복을 허용하지 않는다.
- 비유니크 인덱스(Non-unique index) : 인덱스 구성 컬럼들 값에 중복을 허용한다.
유니크 인덱스로 지정된 컬럼들에는 중복된 값을 저장하지 못한다. PK 제약 조건에는 무조건 유니크 인 덱스가 구성된다. 데이터베이스 설계 시점부터 업무적으로 유니크한 속성들을 파악해서 유니크 인덱스 를 만들어 주는 것이 좋다.
인덱스의 물리적인 구조에 따라 B*트리 인덱스, 비트맵 인덱스로 구분한다.
- B*Tree index
- Bitmap index
Bitmap index는 값의 종류가 많지 않은 컬럼에 사용한다. 예를 들어, 주문유형에 대한 값이 '주문대기, 주 문완료' 두 종류 값만 있다면 Bitmap index를 고려할 수 있다.
대용량 테이블에는 파티션을 구성하는 것이 좋다. 대용량 테이블을 파티션 없이 인덱스만 만들어 사용하 기에는 성능에 한계가 있다. 그뿐만 아니라 오래된 데이터는 별도 저장소로 백업한 후 주기적으로 지우 는 것이 데이터베이스 관리 비용과 성능에 도움이 된다. 파티션 테이블에는 파티션된 인덱스를 만들 수 있다. 파티션 된 인덱스는 글로벌 인덱스, 로컬 인덱스 두 가지로 구분할 수 있다.
- 글로벌 인덱스(Global index)
- 로컬 인덱스(Local index)
'INDEX' 카테고리의 다른 글
INDEX의 기본 개념_INDEX RANGE SCAN VS. TABLE ACCESS FULL (0) | 2021.07.03 |
---|---|
INDEX의 기본 개념_데이터를 찾는 방법 (0) | 2021.07.03 |
INDEX의 기본 개념_B*트리 구조와 탐색 방법 (0) | 2021.07.03 |
INDEX의 기본 개념_인덱스(INDEX)란 ? (0) | 2021.07.03 |