by 구루비스터디 Transformation Star-Transformation Bitmap Join Index [2018.07.14]
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)
- 강좌 URL : http://www.gurubee.net/lecture/3934
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.