B-Tree 보완

특수 인덱스는 컬럼 자체보다
질의가 바라보는 대상에 맞춰 고른다

원값 정렬만으로 느린 경우, 계산된 값·일부 행·비트 조합·복합 데이터·쓰기 패턴처럼 실제 접근 방식을 기준으로 인덱싱 대상을 바꾼다.

선택 기준
“무엇을 빠르게 찾거나, 어떤 병목을 줄여야 하는가?”

특수 인덱스는 같은 테이블에도 목적이 다르면 다른 구조를 쓴다. 아래 네 가지 신호가 보이면 B-Tree 외 선택지를 검토한다.

질의 신호
계산된 값
또는 일부 행
원본 컬럼 전체보다 식 결과나 조건 집합이 중요함
대표 유형
함수 기반 / 부분 인덱스 표현식 결과나 조건을 만족하는 행만 인덱싱
예시와 효과
UPPER(name)
WHERE status='ACTIVE'

함수 계산을 매번 다시 하지 않거나, 자주 보는 활성 행만 좁게 잡아 읽기 범위를 줄인다.

질의 신호
값 종류가 적고
조건 조합이 많음
분석 쿼리에서 여러 필터를 AND/OR로 자주 결합
대표 유형
비트맵 인덱스 낮은 카디널리티 컬럼의 조건 집합을 비트로 결합
예시와 효과
status='COMPLETED'
AND payment_type='CARD'

비트 AND/OR 연산이 빨라 DW 질의에 강하다. 대신 DML이 많은 OLTP에서는 동시성에 불리하다.

질의 신호
텍스트 내용이나
복합 구조 내부 검색
문서, 배열, JSON, 공간 데이터 안쪽을 직접 찾음
대표 유형
전문 검색 / GiST·GIN 단어 토큰, 다차원 값, 포함 관계를 위한 구조
예시와 효과
LIKE '%keyword%' 대체
JSON / 배열 / 공간 검색

문자열 전체 스캔 대신 내용 기반 탐색을 하거나, 다차원·포함 연산을 빠르게 처리한다.

질의 신호
순차 키 삽입이
한쪽 끝으로 몰림
증가하는 키 때문에 동일한 리프 페이지가 계속 뜨거워짐
대표 유형
역방향 키 인덱스 키 분포를 뒤집어 삽입 경합을 분산
예시와 효과
1001, 1002, 1003 ...
→ 삽입 핫스팟 완화

Oracle RAC 같은 환경에서 순차 삽입 경쟁을 줄이는 데 유리하다.

핵심: 특수 인덱스는 “더 빠른 만능 인덱스”가 아니라, 어떤 값을 찾고 어떤 병목을 줄일지에 맞춰 저장 방식을 바꾸는 선택지다.