카테고리 없음
[sqld 2장]B-Tree 인덱스 CLUSTERED 인덱스 BITMAP 인덱스
딸기뚜왈기
2025. 3. 5. 20:17
✅ 관계형 데이터베이스에서 사용되는 인덱스 설명
데이터베이스에서 인덱스(Index)는 데이터 검색 속도를 향상시키기 위해 사용됩니다.
특히 균형 트리(Balance Tree) 기반의 B-Tree 인덱스는 관계형 데이터베이스에서 가장 많이 사용됩니다.
1. B-Tree 인덱스
🔹 구성 요소
- 브랜치(Branch) 블록: 트리의 중간 노드 역할, 검색 경로를 결정
- 리프(Leaf) 블록: 실제 인덱스 값이 정렬된 상태로 저장됨
🔹 특징
- 균형 트리 구조 → 검색, 삽입, 삭제 연산 시 트리의 균형을 유지
- 검색 속도 향상 → 데이터가 정렬된 상태로 저장되어 빠르게 검색 가능
- OLTP (Online Transaction Processing) 환경에서 많이 사용됨
- OLTP: 실시간으로 많은 트랜잭션(INSERT, UPDATE, DELETE)이 발생하는 시스템
📌 예제
CREATE INDEX emp_idx ON employees(emp_id);
➡ employees 테이블의 emp_id 컬럼에 B-Tree 인덱스를 생성
2. CLUSTERED 인덱스
🔹 구성 요소
- 리프 페이지(Leaf Page) 자체가 데이터 페이지
- 데이터가 인덱스 키 컬럼 순서대로 물리적으로 정렬되어 저장됨
🔹 특징
- 데이터가 물리적으로 정렬된 상태로 저장되므로 검색 성능이 향상됨
- 한 테이블에 하나만 생성 가능 (데이터 자체를 정렬하는 방식이기 때문)
- INSERT, UPDATE 시 데이터 재정렬이 필요할 수 있음
📌 예제
CREATE CLUSTERED INDEX emp_cl_idx ON employees(emp_id);
➡ employees 테이블의 emp_id 컬럼을 기준으로 정렬된 형태의 CLUSTERED 인덱스 생성
3. BITMAP 인덱스
🔹 구성 요소
- 인덱스 키 값마다 비트맵(Bit Array)을 생성하여 여러 행을 포인터로 저장
🔹 특징
- 소수의 값(카디널리티가 낮은 컬럼, 예: 성별, 지역, 등급)에 적합
- 비교 연산(AND, OR, NOT)에서 강력한 성능 발휘
- DW (Data Warehouse) 및 AD-HOC 질의 환경에서 주로 사용
- INSERT, UPDATE, DELETE가 자주 발생하는 OLTP 환경에는 부적합 (변경 비용이 큼)
📌 예제
CREATE BITMAP INDEX emp_gender_idx ON employees(gender);
➡ employees 테이블의 gender 컬럼(남/여)에서 BITMAP 인덱스 생성
✅ 🔍 요약
인덱스 종류 | 특징 | 사용 환경 |
B-Tree 인덱스 | 균형 트리 구조, 빠른 검색 | OLTP (트랜잭션 처리) 테이블 내의 데이터 중 10% 이하의 데이터를 검색할 때 유리. |
CLUSTERED 인덱스 | 인덱스 리프 페이지 = 데이터 페이지, 물리적으로 정렬됨 오라클의 IOT와 매우 유사함. |
검색 최적화 필요 시 (PK) |
BITMAP 인덱스 | 비트맵을 이용하여 다수의 행을 저장, 논리 연산 강함 | DW, OLAP, 카디널리티 낮은 컬럼 |
📌 B-Tree는 가장 일반적으로 사용되며, CLUSTERED 인덱스는 데이터 자체를 정렬하여 검색 속도를 올리는 방식,
BITMAP 인덱스는 분석/조회 중심의 환경에서 논리 연산(AND, OR) 성능을 높이기 위해 사용됨. 🚀