✅ 비트맵 인덱스란?
데이터 값을 0과 1(비트)의 조합으로 표현해서 빠르게 검색하는 인덱스야.
📌 특히 **"값의 종류가 적고 중복이 많은 컬럼"**에 아주 효과적이야!
🎯 예를 들어보자!
📋 직원 테이블
| 사번 | 성별 |
| 1001 | M |
| 1002 | F |
| 1003 | M |
| 1004 | F |
👉 비트맵 인덱스를 만들면?
- M 컬럼 인덱스: 1 0 1 0
- F 컬럼 인덱스: 0 1 0 1
→ 각 값마다 해당 위치에 1 또는 0으로 표시된 벡터(행렬)을 만들어 놓는 거야.
✅ 왜 좋을까?
🔥 1. 조건 검색이 빠름
WHERE 성별 = 'M'
👉 1 0 1 0 비트 벡터로 바로 검색 가능!
🔥 2. 복잡한 조건도 쉽게 계산
WHERE 성별 = 'M' AND 부서 = '영업'
→ 두 비트맵을 AND 연산해서 바로 결과를 도출!
✅ 언제 사용해야 할까?
| 상황 | 설명 |
| 🔁 값이 반복되는 컬럼 | 예: 성별, 부서, 지역 등 |
| 📉 값 종류가 적은 경우 | 예: Y/N, 1/0, 등급(1~5) 등 |
| 🔒 데이터 수정이 적은 경우 | UPDATE, DELETE가 많으면 비효율적 |
❌ 주의할 점
| 항목 | 설명 |
| 🔨 데이터 변경이 많으면 느려져 | 인덱스 재정비 비용이 큼 |
| 👥 다중 사용자가 동시에 수정하면 충돌 우려 | 병행처리에 약함 |
| 📦 PK 컬럼에는 적합하지 않음 | 범위가 넓고 고유해야 하니까! |
✅ 비트맵 인덱스 만들기
CREATE BITMAP INDEX idx_gender
ON employees(gender);
→ 일반 인덱스는 CREATE INDEX, 비트맵 인덱스는 CREATE BITMAP INDEX
✅ 비트맵 인덱스 vs B-Tree 인덱스
| 비교 항목 | 비트맵 인덱스 | B-Tree 인덱스 |
| 대상 컬럼 | 중복 많은 컬럼 | 고유한 값이 많을 때 |
| 성능 | 조건이 많은 SELECT에 빠름 | INSERT/UPDATE/DELETE가 많은 경우 적합 |
| 사용 예시 | 성별, 지역, 상태 | 사번, 이름, 전화번호 등 |
💡 정리 한줄 요약!
비트맵 인덱스는 '중복 많고, 자주 안 바뀌는 컬럼'에 쓰면 성능 짱짱!
단, 데이터 자주 바뀌는 테이블에는 쓰면 오히려 느려질 수 있어 ❌
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-17] PL/SQL에서 사용되는 프로그래밍 구조(Program Units) (0) | 2025.04.23 |
|---|---|
| [Oracle D-16] SYNONYM 객체 (0) | 2025.04.22 |
| [Oracle D-16] 시퀀스(Sequence) (0) | 2025.04.22 |
| [Oracle D-16] VIEW (0) | 2025.04.22 |
| [Oracle D-15] Oracle 객체 (0) | 2025.04.21 |