select /*+ */
sum(x), count(y), sum(z)
from
(
select /*+ qb_name(depth1) */
x, y, z, push_key, max_value, sum_value
from
(
select /*+ qb_name(depth2) */
*
from
(
select /*+ qb_name(depth3) */
*
from
(
select /*+ qb_name(depth4) */
t1.c1 as x, t2.c2 as y, t3.c2 as z, t1.c2 as push_key,
max(t1.c3) as max_value,
sum(t1.c3) as sum_value
from
t1, t2, t3
where
t1.c1 = t2.c1
and t2.c1 = t3.c1
group by
t1.c1, t2.c2, t3.c2, t1.c2
order by
t1.c1, t2.c2, t3.c2, t1.c2
)
)
)
) where push_key = 1
order by 1
Execution Plan
--------------------------------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=1 Bytes=41)
1 0 SORT (AGGREGATE) (Card=1 Bytes=41)
2 1 VIEW (Cost=8 Card=1 Bytes=41)
3 2 HASH (GROUP BY) (Cost=8 Card=1 Bytes=91)
4 3 HASH JOIN (Cost=7 Card=1 Bytes=91)
5 4 MERGE JOIN (CARTESIAN) (Cost=4 Card=1 Bytes=65)
6 5 TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=2 Card=1 Bytes=39)
7 5 BUFFER (SORT) (Cost=2 Card=1 Bytes=26)
8 7 TABLE ACCESS (FULL) OF 'T3' (TABLE) (Cost=2 Card=1 Bytes=26)
9 4 TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=2 Card=1 Bytes=26)
access predicate 4 - "T1"."C1"="T2"."C1" AND "T2"."C1"="T3"."C1"
filter predicate 6 - "T1"."C2"=1
select /*+ */
sum(x), count(y), sum(z)
from
(
select /*+ qb_name(depth1) */
x, y, z, push_key, max_value, sum_value, rownum as r
from
(
select /*+ qb_name(depth2) */
*
from
(
select /*+ qb_name(depth3) */
*
from
(
select /*+ qb_name(depth4) */
t1.c1 as x, t2.c2 as y, t3.c2 as z, t1.c2 as push_key,
max(t1.c3) as max_value,
sum(t1.c3) as sum_value
from
t1, t2, t3
where
t1.c1 = t2.c1
and t2.c1 = t3.c1
group by
t1.c1, t2.c2, t3.c2, t1.c2
order by
t1.c1, t2.c2, t3.c2, t1.c2
)
)
)
) where push_key = 1
order by 1
Execution Plan
--------------------------------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=1 Bytes=52)
1 0 SORT (AGGREGATE) (Card=1 Bytes=52)
2 1 VIEW (Cost=8 Card=1 Bytes=52)
3 2 COUNT
4 3 VIEW (Cost=8 Card=1 Bytes=52)
5 4 SORT (GROUP BY) (Cost=8 Card=1 Bytes=91)
6 5 HASH JOIN (Cost=7 Card=1 Bytes=91)
7 6 MERGE JOIN (CARTESIAN) (Cost=4 Card=1 Bytes=65)
8 7 TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=2 Card=1 Bytes=39)
9 7 BUFFER (SORT) (Cost=2 Card=1 Bytes=26)
10 9 TABLE ACCESS (FULL) OF 'T3' (TABLE) (Cost=2 Card=1 Bytes=26)
11 6 TABLE ACCESS (FULL) OF 'T2' (TABLE) (Cost=2 Card=1 Bytes=26)
access predicate 6- "T1"."C1"="T2"."C1" AND "T2"."C1"="T3"."C1"
filter predicate 2- "PUSH_KEY"=1
*10054 Event를 사용하여 추적
.....
CVM : CVM bypassed : ORDER BY Clause
CVM : CVM bypassed : Rownum Column
**************************
Predicate Move-Around (PM)
**************************
PM: Considering Predicate move-around in SEL$1(#1).
PM: Checking validity of Predicate move-around
PM: PM bypassed : Reference to ROWNUM
PM: passed validity check.