3.2.4. 비트맵(Bitmap) 실행계획
2010.11.07 23:35
3.2.4. 비트맵(Bitmap) 실행계획
3.2.4.1. 조건 연산자별 비트맵 실행계획
가) 동치(Equal) 비교 실행계획
- 가장 단순한 형태로 하나의 컬럼 '=' 로 비교한 경우
- 'IN' 사용 시 여러개의 '=' 를 사용한 것과 동일
- 비트맵 검색 처리를 'SINGLE VALUE'로 나타냄
나) 범위(Range) 비교 실행계획
- 범위를 나타내는 BETWEEN, LIKE, >, <, >=, <= 연산자 사용 시 'RANGE SCAN'
- Number 타입의 컬럼에 LIKE 사용 시
- B-Tree 인덱스 : 인덱스를 사용하지 않음 ∵ 내부적인 변형 발생
- Bitmap 인덱스 : 인덱스 'FULL SCAN' 실행계획 발생
다) AND 조건 실행계획
- 각 컬럼을 자신의 단위 액세스를 수행 후 그 결과를 AND 연산 실시
- 비트맵을 범위 스캔 시, 각 인덱스 처리 후 비트맵 머지 결과를 'AND' 연산 실시
- NOT EQUAL 조건과 함께 AND 조건 사용 시 'BITMAP MINUS' 연산 발생
![]()
라) OR 조건 실행계획
- AND 조건 실행계획과 동일
- 부정형 조건('<>') 이 OR 연산에 사용 시 하나의 비트맵 인덱스만 사용
![]()
마) 부등식(Not Equal) 비교 실행계획
- 등식 조건의 엑세스 수행 결과를 'BITMAP MINUS' 를 통하여 제거 처리
- 해당 컬럼이 NULL을 포함 시 NULL 값을 제거하는 작업 추가
![]()
바) NULL 비교 실행계획
- 비트맵 인덱스에서는 'IS NULL' 또는 'IS NOT NULL' 연산자 처리 시 NULL도 비트맵 연산에 참여
3.2.4.2 서브쿼리 실행계획
- B-Tree 인덱스일 때와 유사
- 여러 개의 서브 쿼리가 동시 사용 될 때, 스타변형 조인(비트맵 인덱스의 특성 사용)으로 수행되도록 처리 시 효율적 실행계획 수행
3.2.4.3. B-Tree 인덱스와 연합(Combine) 실행계획
- B-Tree 인덱스를 비트맵으로 전환하여 비트맵 연산 수행 가능
- "BITMAP -> ROWID" , "ROWID -> BITMAP" 으로 전환 할 수 있는 특성 이용
- 비트맵 인덱스가 전혀 없을 시 "INDEX_COMBINE" 힌트 사용으로 비트맵 엑세스 가능