Optimizing Oracle Optimizer (2011년)
Bitmap Join Index 0 0 2,339

by 구루비스터디 Transformation Star-Transformation Bitmap Join Index [2018.07.14]


Bitmap Join Index

  • 다른 성능 개선 안으로는 Bitmap Join Index를 사용하는 것임
  • Bitmap Join Index생성 예제는 다음과 같음
  • Index가 이미 Join된 결과를 가지고 있기 때문에 일량을 줄이는데 도움이 됨


create bitmap index t_fact_bjidx1 on t_fact(d1.value)
from t_fact f, t_dim1 d1
where 
    f.dim1_key = d1.dim1_key
;

create bitmap index t_fact_bjidx2 on t_fact(d2.value)
from t_fact f, t_dim2 d2
where
    f.dim2_key = d2.dim2_key
;

select /*+ gather_plan_statistics */
    d1.value as area,
    d2.value as code,
    sum(f.value1) as sum_value1,
    max(f.value2) as max_value2,
    count(*) as counts
from
    t_fact f,
    t_dim1 d1,
    t_dim2 d2
where
    f.dim1_key = d1.dim1_key and
    f.dim2_key = d2.dim2_key and
    d1.value like 'area1%' and
    d2.value = 'code1'
group by
    d1.value, d2.value
;

Execution Plan
--------------------------------------------------------------------------------
   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=30 Card=1 Bytes=40)
   1    0   HASH (GROUP BY) (Cost=30 Card=1 Bytes=40)
   2    1     NESTED LOOPS (Cost=29 Card=1 Bytes=40)
   3    2       NESTED LOOPS (Cost=28 Card=10 Bytes=310)
   4    3         TABLE ACCESS (BY INDEX ROWID) OF 'T_FACT' (TABLE) (Cost=25 Card=1000 Bytes=21K)
   5    4           BITMAP CONVERSION (TO ROWIDS)
   6    5             BITMAP AND
   7    6               BITMAP INDEX (SINGLE VALUE) OF 'T_FACT_BJIDX2' (INDEX (BITMAP))
   8    6               BITMAP MERGE
   9    8                 BITMAP INDEX (RANGE SCAN) OF 'T_FACT_BJIDX1' (INDEX (BITMAP))
  10    3         TABLE ACCESS (BY INDEX ROWID) OF 'T_DIM2' (TABLE) (Cost=1 Card=1 Bytes=9)
  11   10           INDEX (UNIQUE SCAN) OF 'SYS_C006025' (INDEX (UNIQUE)) (Cost=0 Card=1)
  12    2       TABLE ACCESS (BY INDEX ROWID) OF 'T_DIM1' (TABLE) (Cost=1 Card=1 Bytes=9)
  13   12         INDEX (UNIQUE SCAN) OF 'SYS_C006024' (INDEX (UNIQUE)) (Cost=0 Card=1)

  • 성는 개선 효과는 존재하지만 Star Transformaiton이 성능 개선에는 가장 탁월함
"데이터베이스 스터디모임" 에서 2009년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3934

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입