카테고리 없음

[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) 성능을 높이기 위해 사용됨. 🚀