cube看起来最优
SQL> desc t
名称
是否为空? 类型
------------------------------------------------------------------------ -------- ---------------
C1
NUMBER
C2
NUMBER
C3
NUMBER
C4
NUMBER
V
NUMBER
SQL> set autot traceonly
with ta as
(select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by c1,c2,c3,c4)
select * from ta
union all
select c1,c2,c3,null,sum(v)v,grouping_id(c1,c2,c3,null)gid from ta group by c1,c2,c3,null
SQL> with ta as
2(select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by c1,c2,c3,c4)
3select * from ta
4union all
5select c1,c2,c3,null,sum(v)v,grouping_id(c1,c2,c3,null)gid from ta group by c1,c2,c3,null
6/
已选择200行。
已用时间:00: 00: 01.08
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE
12 RECURSIVE EXECUTION OF 'SYS_LE_2_0'
20 TEMP TABLE TRANSFORMATION
32 UNION-ALL
43 VIEW
54 TABLE ACCESS (FULL) OF 'SYS_TEMP_0FD9D6601_E72F8E'
63 SORT (GROUP BY)
76 VIEW
87 TABLE ACCESS (FULL) OF 'SYS_TEMP_0FD9D6601_E72F8E'
Statistics
----------------------------------------------------------
986recursive calls
12db block gets
336consistent gets
30physical reads
1300redo size
4958bytes sent via SQL*Net to client
646bytes received via SQL*Net from client
15SQL*Net roundtrips to/from client
16sorts (memory)
0sorts (disk)
200rows processed
select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by c1,c2,c3,c4
union all
select c1,c2,c3,null,sum(v)v,grouping_id(c1,c2,c3,null)gid from t group by c1,c2,c3,null
SQL> select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by c1,c2,c3,c4
2union all
3select c1,c2,c3,null,sum(v)v,grouping_id(c1,c2,c3,null)gid from t group by c1,c2,c3,null
4/
已选择200行。
已用时间:00: 00: 00.01
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE
10 UNION-ALL
21 SORT (GROUP BY)
32 TABLE ACCESS (FULL) OF 'T'
41 SORT (GROUP BY)
54 TABLE ACCESS (FULL) OF 'T'
Statistics
----------------------------------------------------------
0recursive calls
0db block gets
6consistent gets
0physical reads
0redo size
4958bytes sent via SQL*Net to client
646bytes received via SQL*Net from client
15SQL*Net roundtrips to/from client
2sorts (memory)
0sorts (disk)
200rows processed
SQL> select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by cube(c1,c2,c3,c4);
已选择1060行。
已用时间:00: 00: 00.02
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE
10 SORT (GROUP BY)
21 GENERATE (CUBE)
32 SORT (GROUP BY)
43 TABLE ACCESS (FULL) OF 'T'
Statistics
----------------------------------------------------------
0recursive calls
0db block gets
3consistent gets
0physical reads
0redo size
22413bytes sent via SQL*Net to client
1273bytes received via SQL*Net from client
72SQL*Net roundtrips to/from client
2sorts (memory)
0sorts (disk)
1060rows processed
select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by grouping sets((c1,c2,c3,c4),(c1,c2,c3,null));
SQL> select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by grouping sets((c1,c2,c3,c4),(c1,c2,c3,null));
已选择200行。
已用时间:00: 00: 00.02
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=327 Bytes=255
06)
14 RECURSIVE EXECUTION OF 'SYS_LE_4_0'
24 RECURSIVE EXECUTION OF 'SYS_LE_4_1'
34 RECURSIVE EXECUTION OF 'SYS_LE_4_2'
40 TEMP TABLE TRANSFORMATION
54 VIEW (Cost=2 Card=1 Bytes=78)
65 TABLE ACCESS (FULL) OF 'SYS_TEMP_0FD9D6605_E72F8E' (Co
st=2 Card=1 Bytes=78)
Statistics
----------------------------------------------------------
357recursive calls
25db block gets
84consistent gets
4physical reads
3036redo size
4961bytes sent via SQL*Net to client
646bytes received via SQL*Net from client
15SQL*Net roundtrips to/from client
2sorts (memory)
0sorts (disk)
200rows processed
SQL> select * from(select c1,c2,c3,c4,sum(v)v,grouping_id(c1,c2,c3,c4)gid from t group by cube(c1,c2,c3,c4))where gid=0 or gid=1;
已选择200行。
已用时间:00: 00: 00.01
Execution Plan
----------------------------------------------------------
0SELECT STATEMENT Optimizer=CHOOSE
10 VIEW
21 FILTER
32 SORT (GROUP BY ROLLUP)
43 TABLE ACCESS (FULL) OF 'T'
Statistics
----------------------------------------------------------
0recursive calls
0db block gets
3consistent gets
0physical reads
0redo size
4845bytes sent via SQL*Net to client
646bytes received via SQL*Net from client
15SQL*Net roundtrips to/from client
1sorts (memory)
0sorts (disk)
200rows processed
[ 本帖最后由 〇〇 于 2010-3-30 20:35 编辑 ]
|