메뉴 건너뛰기

bysql.net

3.2.4. 비트맵(Bitmap) 실행계획

2010.11.08 08:35

실천하자 조회 수:12833

3.2.4. 비트맵(Bitmap) 실행계획


3.2.4.1. 조건 연산자별 비트맵 실행계획

가) 동치(Equal) 비교 실행계획

    • 가장 단순한 형태로 하나의 컬럼 '=' 로 비교한 경우
    • 'IN' 사용 시 여러개의 '=' 를 사용한 것과 동일
    • 비트맵 검색 처리를 'SINGLE VALUE'로 나타냄
BIT_1.png

BIT_2.png



나) 범위(Range) 비교 실행계획

    • 범위를 나타내는 BETWEEN, LIKE, >, <, >=, <= 연산자 사용 시 'RANGE SCAN'
    • Number 타입의 컬럼에 LIKE 사용 시 
      • B-Tree 인덱스 : 인덱스를 사용하지 않음  ∵ 내부적인 변형 발생
      • Bitmap 인덱스 : 인덱스 'FULL SCAN' 실행계획 발생
BIT_3.png


다) AND 조건 실행계획

    • 각 컬럼을 자신의 단위 액세스를 수행 후 그 결과를 AND 연산 실시
    • 비트맵을 범위 스캔 시, 각 인덱스 처리 후 비트맵 머지 결과를 'AND' 연산 실시
    • NOT EQUAL 조건과 함께 AND 조건 사용 시 'BITMAP MINUS' 연산 발생

BIT_4.png



라) OR 조건 실행계획

    • AND 조건 실행계획과 동일
    • 부정형 조건('<>') 이 OR 연산에 사용 시 하나의 비트맵 인덱스만 사용

BIT_5.png



마) 부등식(Not Equal) 비교 실행계획

    • 등식 조건의 엑세스 수행 결과를 'BITMAP MINUS' 를 통하여 제거 처리
    • 해당 컬럼이 NULL을 포함 시 NULL 값을 제거하는 작업 추가

BIT_6.png



바) NULL 비교 실행계획

    • 비트맵 인덱스에서는 'IS NULL' 또는 'IS NOT NULL' 연산자 처리 시 NULL도 비트맵 연산에 참여

BIT_7.png




3.2.4.2 서브쿼리 실행계획

  • B-Tree 인덱스일 때와 유사
  • 여러 개의 서브 쿼리가 동시 사용 될 때, 스타변형 조인(비트맵 인덱스의 특성 사용)으로 수행되도록 처리 시 효율적 실행계획 수행



3.2.4.3. B-Tree 인덱스와 연합(Combine) 실행계획

  • B-Tree 인덱스를 비트맵으로 전환하여 비트맵 연산 수행 가능 
    • "BITMAP -> ROWID" , "ROWID -> BITMAP" 으로 전환 할 수 있는 특성 이용
  • 비트맵 인덱스가 전혀 없을 시 "INDEX_COMBINE" 힌트 사용으로 비트맵 엑세스 가능
BIT_8.png