*************** Case 1 *************** SQL: select * from t4 where c1 in (select c1 from t1); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |100 |1233| |1 | EXCHANGE OUT DISTR |:EX10001|100 |1214| |2 | MERGE JOIN | |100 |1214| |3 | EXCHANGE IN DISTR | |100 |107 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|100 |92 | |5 | TABLE SCAN |t4 |100 |92 | |6 | SORT | |500 |966 | |7 | PX PARTITION ITERATOR | |500 |331 | |8 | TABLE SCAN |t1 |500 |331 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) 1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), dop=1 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), equal_conds([t4.c1 = t1.c1]), other_conds(nil) 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) 4 - (#keys=1, [t4.c1]), output([t4.c1], [t4.c2], [t4.c3]), filter(nil), is_single, dop=1 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) 6 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort 7 - output([t1.c1]), filter(nil) 8 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t4"@"SEL$1" "opt.t1"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt.t4"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 1(end) ************** *************** Case 2 *************** SQL: select /*+INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c3")*/* from t1 where c1 in (select c1 from t4); ================================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------------- |0 |PX COORDINATOR | |100 |1428| |1 | EXCHANGE OUT DISTR |:EX10001 |100 |1418| |2 | MERGE SEMI JOIN | |100 |1418| |3 | SORT | |500 |1074| |4 | PX PARTITION ITERATOR | |500 |342 | |5 | TABLE SCAN |t1 |500 |342 | |6 | SORT | |100 |203 | |7 | EXCHANGE IN DISTR | |100 |95 | |8 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |100 |90 | |9 | TABLE SCAN |t4(idx_t4_c3)|100 |90 | ================================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), equal_conds([t1.c1 = t4.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort 4 - output([t1.c1], [t1.c2]), filter(nil) 5 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 6 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) 7 - output([t4.c1]), filter(nil) 8 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1 9 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t4"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt.t1"@"SEL$1") INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3") END_OUTLINE_DATA */ *************** Case 2(end) ************** *************** Case 3 *************** SQL: select * from t1 where c1 in (select c1 from t4); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |100 |1320| |1 | EXCHANGE OUT DISTR |:EX10001|100 |1311| |2 | MERGE SEMI JOIN | |100 |1311| |3 | SORT | |500 |1074| |4 | PX PARTITION ITERATOR | |500 |342 | |5 | TABLE SCAN |t1 |500 |342 | |6 | EXCHANGE IN DISTR | |100 |95 | |7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|100 |90 | |8 | TABLE SCAN |t4 |100 |90 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), equal_conds([t1.c1 = t4.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort 4 - output([t1.c1], [t1.c2]), filter(nil) 5 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 6 - output([t4.c1]), filter(nil) 7 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1 8 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t4"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 3(end) ************** *************** Case 4 *************** SQL: select /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3") INDEX(@"SEL$2" "opt.t1"@"SEL$2" "idx_t1_c2") END_OUTLINE_DATA */* from t4 where c1 in (select max(c1) from t1); ==================================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------------------- |0 |NESTED-LOOP JOIN | |1 |561 | |1 | SUBPLAN SCAN |VIEW1 |1 |447 | |2 | SCALAR GROUP BY | |1 |446 | |3 | SUBPLAN SCAN |VIEW2 |1 |446 | |4 | LIMIT | |1 |446 | |5 | PX COORDINATOR MERGE SORT | |1 |446 | |6 | EXCHANGE OUT DISTR |:EX10000 |1 |446 | |7 | LIMIT | |1 |446 | |8 | TOP-N SORT | |1 |446 | |9 | PX PARTITION ITERATOR | |500 |331 | |10| TABLE SCAN |t1(idx_t1_c2) |500 |331 | |11| TABLE SCAN |t4(idx_t4_c2_c3)|100 |92 | ==================================================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), conds([t4.c1 = VIEW1.max(c1)]), nl_params_(nil) 1 - output([VIEW1.max(c1)]), filter(nil), access([VIEW1.max(c1)]) 2 - output([T_FUN_MAX(VIEW2.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(VIEW2.c1)]) 3 - output([VIEW2.c1]), filter(nil), access([VIEW2.c1]) 4 - output([t1.c1]), filter(nil), limit(1), offset(nil) 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]) 6 - output([t1.c1]), filter(nil), dop=1 7 - output([t1.c1]), filter(nil), limit(1), offset(nil) 8 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), topn(1) 9 - output([t1.c1]), filter(nil) 10 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" )) INDEX(@"SEL$3" "opt.t1"@"SEL$3" "idx_t1_c2") INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3") END_OUTLINE_DATA */ *************** Case 4(end) ************** *************** Case 5 *************** SQL: select * from t4 where c1 in (select max(c1) from t1); =============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------------- |0 |NESTED-LOOP JOIN | |1 |74 | |1 | SUBPLAN SCAN |VIEW1 |1 |38 | |2 | SCALAR GROUP BY | |1 |38 | |3 | SUBPLAN SCAN |VIEW2 |1 |37 | |4 | LIMIT | |1 |37 | |5 | PX COORDINATOR MERGE SORT | |1 |37 | |6 | EXCHANGE OUT DISTR |:EX10000 |1 |37 | |7 | LIMIT | |1 |37 | |8 | TOP-N SORT | |1 |37 | |9 | PX PARTITION ITERATOR | |1 |36 | |10| TABLE SCAN |t1(Reverse)|1 |36 | |11| TABLE SCAN |t4 |1 |36 | =============================================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), conds(nil), nl_params_([VIEW1.max(c1)]) 1 - output([VIEW1.max(c1)]), filter(nil), access([VIEW1.max(c1)]) 2 - output([T_FUN_MAX(VIEW2.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(VIEW2.c1)]) 3 - output([VIEW2.c1]), filter(nil), access([VIEW2.c1]) 4 - output([t1.c1]), filter(nil), limit(1), offset(nil) 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]) 6 - output([t1.c1]), filter(nil), dop=1 7 - output([t1.c1]), filter(nil), limit(1), offset(nil) 8 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), topn(1), local merge sort 9 - output([t1.c1]), filter(nil) 10 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]), limit(1), offset(nil) 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" )) FULL(@"SEL$3" "opt.t1"@"SEL$3") FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 5(end) ************** *************** Case 6 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$3" "opt.t2"@"SEL$3") LEADING(@"SEL$3" "opt.t1"@"SEL$3" "opt.t2"@"SEL$3") END_OUTLINE_DATA */* from t1 where c1 in (select * from (select max(t1.c1) from t1, t2) as tt); ================================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------------- |0 |PX COORDINATOR | |1 |135541| |1 | EXCHANGE OUT DISTR |:EX10003|1 |135541| |2 | NESTED-LOOP JOIN | |1 |135541| |3 | EXCHANGE IN DISTR | |1 |135505| |4 | EXCHANGE OUT DISTR (PKEY) |:EX10002|1 |135505| |5 | SUBPLAN SCAN |VIEW1 |1 |135505| |6 | SCALAR GROUP BY | |1 |135504| |7 | NESTED-LOOP JOIN CARTESIAN| |150000 |106853| |8 | MATERIAL | |500 |446 | |9 | EXCHANGE IN DISTR | |500 |354 | |10| EXCHANGE OUT DISTR |:EX10000|500 |331 | |11| PX PARTITION ITERATOR | |500 |331 | |12| TABLE SCAN |t1 |500 |331 | |13| MATERIAL | |300 |261 | |14| EXCHANGE IN DISTR | |300 |206 | |15| EXCHANGE OUT DISTR |:EX10001|300 |192 | |16| PX PARTITION ITERATOR | |300 |192 | |17| TABLE SCAN |t2 |300 |192 | |18| PX PARTITION ITERATOR | |1 |36 | |19| TABLE GET |t1 |1 |36 | ================================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), conds(nil), nl_params_([VIEW1.max(t1.c1)]) 3 - output([VIEW1.max(t1.c1)], [PARTITION_ID]), filter(nil) 4 - (#keys=1, [VIEW1.max(t1.c1)]), output([VIEW1.max(t1.c1)], [PARTITION_ID]), filter(nil), is_single, dop=1 5 - output([VIEW1.max(t1.c1)]), filter(nil), access([VIEW1.max(t1.c1)]) 6 - output([T_FUN_MAX(t1.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t1.c1)]) 7 - output([t1.c1]), filter(nil), conds(nil), nl_params_(nil) 8 - output([t1.c1]), filter(nil) 9 - output([t1.c1]), filter(nil) 10 - output([t1.c1]), filter(nil), dop=1 11 - output([t1.c1]), filter(nil) 12 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 13 - output([1]), filter(nil) 14 - output([1]), filter(nil) 15 - output([1]), filter(nil), dop=1 16 - output([1]), filter(nil) 17 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 18 - output([t1.c1], [t1.c2]), filter(nil) 19 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) LEADING(@"SEL$3" ("opt.t1"@"SEL$3" "opt.t2"@"SEL$3" )) USE_NL(@"SEL$3" ("opt.t2"@"SEL$3" )) USE_NL_MATERIALIZATION(@"SEL$3" ("opt.t2"@"SEL$3" )) FULL(@"SEL$3" "opt.t1"@"SEL$3") FULL(@"SEL$3" "opt.t2"@"SEL$3") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 6(end) ************** *************** Case 7 *************** SQL: select /*+index(t4 idx_t4_c3)*/ * from t4 where c1 = 1; ============================================ |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------- |0 |TABLE SCAN|t4(idx_t4_c3)|1 |109 | ============================================ Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3") END_OUTLINE_DATA */ *************** Case 7(end) ************** *************** Case 8 *************** SQL: select /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3") END_OUTLINE_DATA */ * from t4 where c1 = 1; ============================================ |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------- |0 |TABLE SCAN|t4(idx_t4_c3)|1 |109 | ============================================ Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3") END_OUTLINE_DATA */ *************** Case 8(end) ************** *************** Case 9 *************** SQL: select /*+full(t4)*/ * from t4 where c2 = 1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |1 |109 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), access([t4.c2], [t4.c1], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 9(end) ************** *************** Case 10 *************** SQL: select /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ * from t4 where c2 = 1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |1 |109 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), access([t4.c2], [t4.c1], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 10(end) ************** *************** Case 11 *************** SQL: select * from t1,t2; ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |108575| |1 | PX COORDINATOR | |300 |290 | |2 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |3 | PX PARTITION ITERATOR | |300 |205 | |4 | TABLE SCAN |t2 |300 |205 | |5 | MATERIAL | |500 |573 | |6 | PX COORDINATOR | |500 |389 | |7 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |8 | PX PARTITION ITERATOR | |500 |342 | |9 | TABLE SCAN |t1 |500 |342 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 11(end) ************** *************** Case 12 *************** SQL: select * from t1,t2 where t1.c1=t2.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------ |0 |PX COORDINATOR | |300 |1649| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1536| |2 | MERGE JOIN | |300 |1536| |3 | EXCHANGE IN MERGE SORT DISTR| |500 |389 | |4 | EXCHANGE OUT DISTR (PKEY) |:EX10000|500 |342 | |5 | PX PARTITION ITERATOR | |500 |342 | |6 | TABLE SCAN |t1 |500 |342 | |7 | SORT | |300 |859 | |8 | PX PARTITION ITERATOR | |300 |205 | |9 | TABLE SCAN |t2 |300 |205 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order 4 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */ *************** Case 12(end) ************** *************** Case 13 *************** SQL: select * from t1,(select count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 13(end) ************** *************** Case 14 *************** SQL: select * from (select count(*) from t2) as tt,t1,t9 where t9.c1=t1.c1; =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |1717| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR | |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |100 |1346| |9 | EXCHANGE OUT DISTR |:EX20001|100 |1322| |10| MERGE JOIN | |100 |1322| |11| SORT | |500 |1074| |12| PX PARTITION ITERATOR | |500 |342 | |13| TABLE SCAN |t1 |500 |342 | |14| EXCHANGE IN DISTR | |100 |107 | |15| EXCHANGE OUT DISTR (PKEY)|:EX20000|100 |92 | |16| TABLE SCAN |t9 |100 |92 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([tt.count(*)], [t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil) 9 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), equal_conds([t9.c1 = t1.c1]), other_conds(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort 12 - output([t1.c1], [t1.c2]), filter(nil) 13 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 14 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil) 15 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1 16 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") USE_MERGE(@"SEL$1" ("opt.t9"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t9"@"SEL$1") END_OUTLINE_DATA */ *************** Case 14(end) ************** *************** Case 15 *************** SQL: select * from (select count(*) from t2, t10) as tt,t1,t9 where t9.c1=t1.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ------------------------------------------------------------ |0 |NESTED-LOOP JOIN CARTESIAN | |100 |55725| |1 | SUBPLAN SCAN |tt |1 |54315| |2 | SCALAR GROUP BY | |1 |54315| |3 | NESTED-LOOP JOIN CARTESIAN | |60000 |42854| |4 | PX COORDINATOR | |300 |206 | |5 | EXCHANGE OUT DISTR |:EX10000|300 |192 | |6 | PX PARTITION ITERATOR | |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | MATERIAL | |200 |190 | |9 | PX COORDINATOR | |200 |154 | |10| EXCHANGE OUT DISTR |:EX20000|200 |144 | |11| PX PARTITION ITERATOR | |200 |144 | |12| TABLE SCAN |t10 |200 |144 | |13| PX COORDINATOR | |100 |1346 | |14| EXCHANGE OUT DISTR |:EX30001|100 |1322 | |15| MERGE JOIN | |100 |1322 | |16| SORT | |500 |1074 | |17| PX PARTITION ITERATOR | |500 |342 | |18| TABLE SCAN |t1 |500 |342 | |19| EXCHANGE IN DISTR | |100 |107 | |20| EXCHANGE OUT DISTR (PKEY)|:EX30000|100 |92 | |21| TABLE SCAN |t9 |100 |92 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([tt.count(*)], [t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 3 - output([1]), filter(nil), conds(nil), nl_params_(nil) 4 - output([1]), filter(nil) 5 - output([1]), filter(nil), dop=1 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([1]), filter(nil) 9 - output([1]), filter(nil) 10 - output([1]), filter(nil), dop=1 11 - output([1]), filter(nil) 12 - output([1]), filter(nil), access([t10.c1]), partitions(p[0-1]) 13 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil) 14 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), dop=1 15 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), equal_conds([t9.c1 = t1.c1]), other_conds(nil) 16 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort 17 - output([t1.c1], [t1.c2]), filter(nil) 18 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 19 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil) 20 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1 21 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t2"@"SEL$2" "opt.t10"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t10"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t10"@"SEL$2" )) FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$2" "opt.t10"@"SEL$2") USE_MERGE(@"SEL$1" ("opt.t9"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t9"@"SEL$1") END_OUTLINE_DATA */ *************** Case 15(end) ************** *************** Case 16 *************** SQL: select * from t1,t2,t9; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ------------------------------------------------------------ |0 |NESTED-LOOP JOIN CARTESIAN | |15000000 |10794125| |1 | NESTED-LOOP JOIN CARTESIAN| |30000 |22293 | |2 | PX COORDINATOR | |300 |290 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | MATERIAL | |100 |148 | |7 | TABLE SCAN |t9 |100 |92 | |8 | MATERIAL | |500 |573 | |9 | PX COORDINATOR | |500 |389 | |10| EXCHANGE OUT DISTR |:EX20000|500 |342 | |11| PX PARTITION ITERATOR | |500 |342 | |12| TABLE SCAN |t1 |500 |342 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil) 7 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), dop=1 11 - output([t1.c1], [t1.c2]), filter(nil) 12 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t9"@"SEL$1" )"opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t9"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t9"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t9"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 16(end) ************** *************** Case 17 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) in (select t9.c1 from t9, t10); =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ----------------------------------------------------------- |0 |HASH RIGHT SEMI JOIN | |750 |201826| |1 | SUBPLAN SCAN |VIEW1 |20000 |17173 | |2 | NESTED-LOOP JOIN CARTESIAN| |20000 |14412 | |3 | PX COORDINATOR | |200 |154 | |4 | EXCHANGE OUT DISTR |:EX10000|200 |144 | |5 | PX PARTITION ITERATOR | |200 |144 | |6 | TABLE SCAN |t10 |200 |144 | |7 | MATERIAL | |100 |106 | |8 | TABLE SCAN |t9 |100 |88 | |9 | NESTED-LOOP JOIN CARTESIAN | |150000 |108575| |10| PX COORDINATOR | |300 |290 | |11| EXCHANGE OUT DISTR |:EX20000|300 |205 | |12| PX PARTITION ITERATOR | |300 |205 | |13| TABLE SCAN |t2 |300 |205 | |14| MATERIAL | |500 |573 | |15| PX COORDINATOR | |500 |389 | |16| EXCHANGE OUT DISTR |:EX30000|500 |342 | |17| PX PARTITION ITERATOR | |500 |342 | |18| TABLE SCAN |t1 |500 |342 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 + t2.c1 = VIEW1.c1]), other_conds(nil) 1 - output([VIEW1.c1]), filter(nil), access([VIEW1.c1]) 2 - output([t9.c1]), filter(nil), conds(nil), nl_params_(nil) 3 - output([1]), filter(nil) 4 - output([1]), filter(nil), dop=1 5 - output([1]), filter(nil) 6 - output([1]), filter(nil), access([t10.c1]), partitions(p[0-1]) 7 - output([t9.c1]), filter(nil) 8 - output([t9.c1]), filter(nil), access([t9.c1]), partitions(p0) 9 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t1.c1 + t2.c1]), filter(nil), conds(nil), nl_params_(nil) 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 14 - output([t1.c1], [t1.c2]), filter(nil) 15 - output([t1.c1], [t1.c2]), filter(nil) 16 - output([t1.c1], [t1.c2]), filter(nil), dop=1 17 - output([t1.c1], [t1.c2]), filter(nil) 18 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("VIEW1"@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))) USE_HASH(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t10"@"SEL$2" "opt.t9"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t9"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t9"@"SEL$2" )) FULL(@"SEL$2" "opt.t10"@"SEL$2") FULL(@"SEL$2" "opt.t9"@"SEL$2") USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 17(end) ************** *************** Case 18 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) in (select max(t9.c1) from t9, t10); ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ------------------------------------------------------------ |0 |NESTED-LOOP JOIN | |750 |76097| |1 | NESTED-LOOP JOIN CARTESIAN | |300 |18716| |2 | SUBPLAN SCAN |VIEW1 |1 |18233| |3 | SCALAR GROUP BY | |1 |18233| |4 | NESTED-LOOP JOIN CARTESIAN| |20000 |14412| |5 | PX COORDINATOR | |200 |154 | |6 | EXCHANGE OUT DISTR |:EX10000|200 |144 | |7 | PX PARTITION ITERATOR | |200 |144 | |8 | TABLE SCAN |t10 |200 |144 | |9 | MATERIAL | |100 |106 | |10| TABLE SCAN |t9 |100 |88 | |11| PX COORDINATOR | |300 |290 | |12| EXCHANGE OUT DISTR |:EX20000|300 |205 | |13| PX PARTITION ITERATOR | |300 |205 | |14| TABLE SCAN |t2 |300 |205 | |15| MATERIAL | |500 |573 | |16| PX COORDINATOR | |500 |389 | |17| EXCHANGE OUT DISTR |:EX30000|500 |342 | |18| PX PARTITION ITERATOR | |500 |342 | |19| TABLE SCAN |t1 |500 |342 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 = VIEW1.max(t9.c1)]), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3], [VIEW1.max(t9.c1)]), filter(nil), conds(nil), nl_params_(nil) 2 - output([VIEW1.max(t9.c1)]), filter(nil), access([VIEW1.max(t9.c1)]) 3 - output([T_FUN_MAX(t9.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t9.c1)]) 4 - output([t9.c1]), filter(nil), conds(nil), nl_params_(nil) 5 - output([1]), filter(nil) 6 - output([1]), filter(nil), dop=1 7 - output([1]), filter(nil) 8 - output([1]), filter(nil), access([t10.c1]), partitions(p[0-1]) 9 - output([t9.c1]), filter(nil) 10 - output([t9.c1]), filter(nil), access([t9.c1]), partitions(p0) 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 14 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 15 - output([t1.c1], [t1.c2]), filter(nil) 16 - output([t1.c1], [t1.c2]), filter(nil) 17 - output([t1.c1], [t1.c2]), filter(nil), dop=1 18 - output([t1.c1], [t1.c2]), filter(nil) 19 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("VIEW1"@"SEL$1" "opt.t2"@"SEL$1" )"opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t10"@"SEL$2" "opt.t9"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t9"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t9"@"SEL$2" )) FULL(@"SEL$2" "opt.t10"@"SEL$2") FULL(@"SEL$2" "opt.t9"@"SEL$2") FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 18(end) ************** *************** Case 19 *************** SQL: select * from t8, (select count(*) from t1 where t1.c1 > any (select t2.c1 from t2)) as tt; ====================================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |498 | |1 | SUBPLAN SCAN |tt |1 |344 | |2 | SCALAR GROUP BY | |1 |343 | |3 | PX COORDINATOR | |1 |312 | |4 | EXCHANGE OUT DISTR |:EX10002|1 |312 | |5 | MERGE GROUP BY | |1 |312 | |6 | NESTED-LOOP JOIN | |167 |280 | |7 | EXCHANGE IN DISTR | |1 |38 | |8 | EXCHANGE OUT DISTR (BC2HOST) |:EX10001|1 |38 | |9 | SUBPLAN SCAN |VIEW1 |1 |38 | |10| SCALAR GROUP BY | |1 |38 | |11| SUBPLAN SCAN |VIEW2 |1 |37 | |12| LIMIT | |1 |37 | |13| EXCHANGE IN MERGE SORT DISTR| |1 |37 | |14| EXCHANGE OUT DISTR |:EX10000|1 |37 | |15| LIMIT | |1 |37 | |16| TOP-N SORT | |1 |37 | |17| PX PARTITION ITERATOR | |1 |36 | |18| TABLE SCAN |t2 |1 |36 | |19| PX PARTITION ITERATOR | |167 |134 | |20| TABLE SCAN |t1 |167 |134 | |21| TABLE SCAN |t8 |100 |90 | ====================================================================== Outputs & filters: ------------------------------------- 0 - output([t8.c1], [t8.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil), conds(nil), nl_params_([VIEW1.c1]) 7 - output([VIEW1.c1]), filter(nil) 8 - output([VIEW1.c1]), filter(nil), is_single, dop=1 9 - output([VIEW1.c1]), filter(nil), access([VIEW1.c1]) 10 - output([T_FUN_MIN(VIEW2.c1)]), filter(nil), group(nil), agg_func([T_FUN_MIN(VIEW2.c1)]) 11 - output([VIEW2.c1]), filter(nil), access([VIEW2.c1]) 12 - output([t2.c1]), filter(nil), limit(1), offset(nil) 13 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) 14 - output([t2.c1]), filter(nil), dop=1 15 - output([t2.c1]), filter(nil), limit(1), offset(nil) 16 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), topn(1), local merge sort 17 - output([t2.c1]), filter(nil) 18 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p[0-2]), limit(1), offset(nil) 19 - output([1]), filter(nil) 20 - output([1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 21 - output([t8.c1], [t8.c2]), filter(nil), access([t8.c1], [t8.c2]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t8"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t8"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t8"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") LEADING(@"SEL$2" ("VIEW1"@"SEL$2" "opt.t1"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t1"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t1"@"SEL$2" ) BC2HOST NONE) NO_USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t1"@"SEL$2" )) FULL(@"SEL$4" "opt.t2"@"SEL$4") FULL(@"SEL$2" "opt.t1"@"SEL$2") FULL(@"SEL$1" "opt.t8"@"SEL$1") END_OUTLINE_DATA */ *************** Case 19(end) ************** *************** Case 20 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_MERGE(@"SEL$1" "opt.t2"@"SEL$1") LEADING(@"SEL$1" "opt.t1"@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */* from t1,t2 where t1.c1=t2.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------ |0 |PX COORDINATOR | |300 |1649| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1536| |2 | MERGE JOIN | |300 |1536| |3 | EXCHANGE IN MERGE SORT DISTR| |500 |389 | |4 | EXCHANGE OUT DISTR (PKEY) |:EX10000|500 |342 | |5 | PX PARTITION ITERATOR | |500 |342 | |6 | TABLE SCAN |t1 |500 |342 | |7 | SORT | |300 |859 | |8 | PX PARTITION ITERATOR | |300 |205 | |9 | TABLE SCAN |t2 |300 |205 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order 4 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */ *************** Case 20(end) ************** *************** Case 21 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_MERGE(@"SEL$1" "opt.t1"@"SEL$1") LEADING(@"SEL$1" "opt.t2"@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */* from t1,t2 where t1.c1=t2.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------ |0 |PX COORDINATOR | |300 |1649| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1536| |2 | MERGE JOIN | |300 |1536| |3 | SORT | |300 |859 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | EXCHANGE IN MERGE SORT DISTR| |500 |389 | |7 | EXCHANGE OUT DISTR (PKEY) |:EX10000|500 |342 | |8 | PX PARTITION ITERATOR | |500 |342 | |9 | TABLE SCAN |t1 |500 |342 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order 7 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 21(end) ************** *************** Case 22 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$1" "opt.tt2"@"SEL$1") LEADING(@"SEL$1" "opt.tt1"@"SEL$1" "opt.tt2"@"SEL$1") FULL(@"SEL$1" "opt.tt1"@"SEL$1") FULL(@"SEL$1" "opt.tt2"@"SEL$1") END_OUTLINE_DATA */* from t1 as tt1,t2 as tt2 where tt1.c1=tt2.c1; =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ----------------------------------------------------------- |0 |PX COORDINATOR | |300 |18870| |1 | EXCHANGE OUT DISTR |:EX10001|300 |18757| |2 | NESTED-LOOP JOIN | |300 |18757| |3 | EXCHANGE IN DISTR | |500 |389 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|500 |342 | |5 | PX PARTITION ITERATOR | |500 |342 | |6 | TABLE SCAN |tt1 |500 |342 | |7 | PX PARTITION ITERATOR | |1 |36 | |8 | TABLE GET |tt2 |1 |36 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt2.c3]), filter(nil) 1 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt2.c3]), filter(nil), dop=1 2 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt2.c3]), filter(nil), conds(nil), nl_params_([tt1.c1]) 3 - output([tt1.c1], [tt1.c2], [PARTITION_ID]), filter(nil) 4 - (#keys=1, [tt1.c1]), output([tt1.c1], [tt1.c2], [PARTITION_ID]), filter(nil), dop=1 5 - output([tt1.c1], [tt1.c2]), filter(nil) 6 - output([tt1.c1], [tt1.c2]), filter(nil), access([tt1.c1], [tt1.c2]), partitions(p[0-4]) 7 - output([tt2.c1], [tt2.c2], [tt2.c3]), filter(nil) 8 - output([tt2.c1], [tt2.c2], [tt2.c3]), filter(nil), access([tt2.c1], [tt2.c2], [tt2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.tt1"@"SEL$1" "opt.tt2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.tt2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.tt2"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.tt2"@"SEL$1" )) FULL(@"SEL$1" "opt.tt1"@"SEL$1") FULL(@"SEL$1" "opt.tt2"@"SEL$1") END_OUTLINE_DATA */ *************** Case 22(end) ************** *************** Case 23 *************** SQL: select /*+read_consistency("weak")*/* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]), hint(read_consistency:2) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") READ_CONSISTENCY("WEAK") END_OUTLINE_DATA */ *************** Case 23(end) ************** *************** Case 24 *************** SQL: select /*+hotspot*/* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 24(end) ************** *************** Case 25 *************** SQL: select /*+topk(1 100)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 25(end) ************** *************** Case 26 *************** SQL: select /*+query_timeout(100)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") QUERY_TIMEOUT(100) END_OUTLINE_DATA */ *************** Case 26(end) ************** *************** Case 27 *************** SQL: select /*+frozen_version(1)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]), hint(frozen_version:"1-0-0", read_consistency:1) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") FROZEN_VERSION(1) END_OUTLINE_DATA */ *************** Case 27(end) ************** *************** Case 28 *************** SQL: select /*+use_plan_cache(none)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") USE_PLAN_CACHE("NONE") END_OUTLINE_DATA */ *************** Case 28(end) ************** *************** Case 29 *************** SQL: select /*+use_plan_cache(default)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") USE_PLAN_CACHE("DEFAULT") END_OUTLINE_DATA */ *************** Case 29(end) ************** *************** Case 30 *************** SQL: select /*+use_plan_cache(nothing)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 30(end) ************** *************** Case 31 *************** SQL: select /*+activate_buried_point(1,FIX_MODE,1,1)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 31(end) ************** *************** Case 32 *************** SQL: select /*+no_rewrite*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") NO_REWRITE END_OUTLINE_DATA */ *************** Case 32(end) ************** *************** Case 33 *************** SQL: select * from t1 where c1 > any (select /*+no_rewrite*/ count(*) from t2); ============================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------- |0 |PX COORDINATOR | |167 |576 | |1 | EXCHANGE OUT DISTR |:EX10002|167 |552 | |2 | NESTED-LOOP JOIN | |167 |552 | |3 | EXCHANGE IN DISTR | |1 |306 | |4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10001|1 |306 | |5 | SUBPLAN SCAN |VIEW1 |1 |306 | |6 | SCALAR GROUP BY | |1 |306 | |7 | EXCHANGE IN DISTR | |1 |249 | |8 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |9 | MERGE GROUP BY | |1 |249 | |10| PX PARTITION ITERATOR | |300 |192 | |11| TABLE SCAN |t2 |300 |192 | |12| PX PARTITION ITERATOR | |167 |138 | |13| TABLE SCAN |t1 |167 |138 | ============================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), conds(nil), nl_params_([VIEW1.count(*)]) 3 - output([VIEW1.count(*)]), filter(nil) 4 - output([VIEW1.count(*)]), filter(nil), is_single, dop=1 5 - output([VIEW1.count(*)]), filter(nil), access([VIEW1.count(*)]) 6 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 7 - output([T_FUN_COUNT(*)]), filter(nil) 8 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 9 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 10 - output([1]), filter(nil) 11 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 12 - output([t1.c1], [t1.c2]), filter(nil) 13 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) BC2HOST NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 33(end) ************** *************** Case 34 *************** SQL: select /*+trace_log*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") TRACE_LOG END_OUTLINE_DATA */ *************** Case 34(end) ************** *************** Case 35 *************** SQL: select /*+log_level('INFO')*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") LOG_LEVEL('info') END_OUTLINE_DATA */ *************** Case 35(end) ************** *************** Case 36 *************** SQL: select * from t1,(select /*+log_level('INFO')*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") LOG_LEVEL('info') END_OUTLINE_DATA */ *************** Case 36(end) ************** *************** Case 37 *************** SQL: select * from t1,(select /*+trace_log*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") TRACE_LOG END_OUTLINE_DATA */ *************** Case 37(end) ************** *************** Case 38 *************** SQL: select * from t1,(select /*+use_plan_cache(none)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") USE_PLAN_CACHE("NONE") END_OUTLINE_DATA */ *************** Case 38(end) ************** *************** Case 39 *************** SQL: select * from t1,(select /*+use_plan_cache(default)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") USE_PLAN_CACHE("DEFAULT") END_OUTLINE_DATA */ *************** Case 39(end) ************** *************** Case 40 *************** SQL: select * from t1,(select /*+use_plan_cache(nothing)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |1019| |1 | SUBPLAN SCAN |tt |1 |306 | |2 | SCALAR GROUP BY | |1 |306 | |3 | PX COORDINATOR | |1 |249 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |249 | |5 | MERGE GROUP BY | |1 |249 | |6 | PX PARTITION ITERATOR| |300 |192 | |7 | TABLE SCAN |t2 |300 |192 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |10| PX PARTITION ITERATOR | |500 |342 | |11| TABLE SCAN |t1 |500 |342 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt.t2"@"SEL$2") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 40(end) ************** *************** Case 41 *************** SQL: select /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "t1"@"SEL$1") READ_CONSISTENCY("WEAK") HOTSPOT TOPK(1 100) QUERY_TIMEOUT(100) FROZEN_VERSION(1) USE_PLAN_CACHE("EXACT") NO_REWRITE TRACE_LOG LOG_LEVEL('info') END_OUTLINE_DATA */* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |389 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |2 | PX PARTITION ITERATOR| |500 |342 | |3 | TABLE SCAN |t1 |500 |342 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil) 1 - output([t1.c1], [t1.c2]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]), hint(frozen_version:"1-0-0", read_consistency:1) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") FROZEN_VERSION(1) QUERY_TIMEOUT(100) NO_REWRITE TRACE_LOG LOG_LEVEL('info') END_OUTLINE_DATA */ *************** Case 41(end) ************** *************** Case 42 *************** SQL: select max(c1) from t1 group by c1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |354 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |331 | |2 | PX PARTITION ITERATOR| |500 |331 | |3 | TABLE SCAN |t1 |500 |331 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1]), filter(nil) 1 - output([t1.c1]), filter(nil), dop=1 2 - output([t1.c1]), filter(nil) 3 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 42(end) ************** *************** Case 43 *************** SQL: select min(c2) from t1 group by c2; ================================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------------- |0 |PX COORDINATOR | |100 |635 | |1 | EXCHANGE OUT DISTR |:EX10001 |100 |626 | |2 | MERGE GROUP BY | |100 |626 | |3 | EXCHANGE IN MERGE SORT DISTR| |100 |489 | |4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |100 |479 | |5 | PX PARTITION ITERATOR | |100 |479 | |6 | MERGE GROUP BY | |100 |479 | |7 | TABLE SCAN |t1(idx_t1_c2)|500 |342 | ================================================================= Outputs & filters: ------------------------------------- 0 - output([T_FUN_MIN(T_FUN_MIN(t1.c2))]), filter(nil) 1 - output([T_FUN_MIN(T_FUN_MIN(t1.c2))]), filter(nil), dop=1 2 - output([T_FUN_MIN(T_FUN_MIN(t1.c2))]), filter(nil), group([t1.c2]), agg_func([T_FUN_MIN(T_FUN_MIN(t1.c2))]) 3 - output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order 4 - (#keys=1, [t1.c2]), output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil), dop=1 5 - output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil) 6 - output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil), group([t1.c2]), agg_func([T_FUN_MIN(t1.c2)]) 7 - output([t1.c2]), filter(nil), access([t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA NO_USE_HASH_AGGREGATION(@"SEL$1") NO_USE_HASH_AGGREGATION(@"SEL$1") INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2") END_OUTLINE_DATA */ *************** Case 43(end) ************** *************** Case 44 *************** SQL: insert into t1 (c1) values(1); ============================================= |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------- |0 |EXCHANGE IN REMOTE | |1 |1 | |1 | EXCHANGE OUT REMOTE| |1 |1 | |2 | INSERT | |1 |1 | |3 | EXPRESSION | |1 |1 | ============================================= Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil) 1 - output(nil), filter(nil) 2 - output([__values.c1], [?]), filter(nil), columns([{t1: ({t1: (t1.c1, t1.c2)})}]), partitions(p1) 3 - output([__values.c1]), filter(nil) values({?}) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA END_OUTLINE_DATA */ *************** Case 44(end) ************** *************** Case 45 *************** SQL: update t7 set c1=100 where c1=1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |UPDATE | |1 |53 | |1 | TABLE GET|t7 |1 |52 | =================================== Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil), table_columns([{t7: ({t7: (t7.c1, t7.c2)})}]), update([t7.c1=?]) 1 - output([t7.c1], [t7.c2], [?]), filter(nil), access([t7.c1], [t7.c2]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"UPD$1" "opt.t7"@"UPD$1") END_OUTLINE_DATA */ *************** Case 45(end) ************** *************** Case 46 *************** SQL: delete from t1 where c1=1; ============================================= |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------- |0 |EXCHANGE IN REMOTE | |1 |53 | |1 | EXCHANGE OUT REMOTE| |1 |53 | |2 | DELETE | |1 |53 | |3 | TABLE GET |t1 |1 |52 | ============================================= Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil) 1 - output(nil), filter(nil) 2 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p1) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"DEL$1" "opt.t1"@"DEL$1") END_OUTLINE_DATA */ *************** Case 46(end) ************** *************** Case 47 *************** SQL: select /*+index(t_normal_idx idx)*/* from t_normal_idx order by c3 limit 1; ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |NESTED-LOOP JOIN| |1 |124 | |1 | LIMIT | |1 |87 | |2 | TOP-N SORT | |1 |87 | |3 | TABLE SCAN |t_normal_idx(idx) |100 |54 | |4 | TABLE GET |t_normal_idx_alias|1 |37 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t_normal_idx.c1], [t_normal_idx_alias.c2], [t_normal_idx.c3], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), filter(nil), conds(nil), nl_params_([t_normal_idx.c1]) 1 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), limit(1), offset(nil) 2 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), sort_keys([t_normal_idx.c3, ASC]), topn(1) 3 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), access([t_normal_idx.c1], [t_normal_idx.c3]), partitions(p0) 4 - output([t_normal_idx_alias.c2], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), filter(nil), access([t_normal_idx_alias.c2], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA USE_LATE_MATERIALIZATION LEADING(@"SEL$1" ("opt.t_normal_idx"@"SEL$1" "opt.t_normal_idx_alias"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" )) INDEX(@"SEL$1" "opt.t_normal_idx"@"SEL$1" "idx") END_OUTLINE_DATA */ *************** Case 47(end) ************** *************** Case 48 *************** SQL: select /*+no_use_late_materialization index(t_normal_idx idx)*/* from t_normal_idx where c2=1 order by c4 limit 1; ================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------- |0 |LIMIT | |1 |783 | |1 | TOP-N SORT | |1 |783 | |2 | TABLE SCAN|t_normal_idx(idx)|100 |676 | ================================================== Outputs & filters: ------------------------------------- 0 - output([t_normal_idx.c1], [t_normal_idx.c2], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), filter(nil), limit(1), offset(nil) 1 - output([t_normal_idx.c1], [t_normal_idx.c2], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), filter(nil), sort_keys([t_normal_idx.c4, ASC]), topn(1) 2 - output([t_normal_idx.c2], [t_normal_idx.c1], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), filter(nil), access([t_normal_idx.c2], [t_normal_idx.c1], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA NO_USE_LATE_MATERIALIZATION INDEX(@"SEL$1" "opt.t_normal_idx"@"SEL$1" "idx") END_OUTLINE_DATA */ *************** Case 48(end) ************** *************** Case 49 *************** SQL: select * from t1 where t1.c1 > (select c1 from t2); ===================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------- |0 |SUBPLAN FILTER | |167 |382 | |1 | PX COORDINATOR | |167 |154 | |2 | EXCHANGE OUT DISTR |:EX10000|167 |138 | |3 | PX PARTITION ITERATOR| |167 |138 | |4 | TABLE SCAN |t1 |167 |138 | |5 | PX COORDINATOR | |300 |206 | |6 | EXCHANGE OUT DISTR |:EX20000|300 |192 | |7 | PX PARTITION ITERATOR| |300 |192 | |8 | TABLE SCAN |t2 |300 |192 | ===================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1]), filter(nil) 6 - output([t2.c1]), filter(nil), dop=1 7 - output([t2.c1]), filter(nil) 8 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$2" "opt.t2"@"SEL$2") END_OUTLINE_DATA */ *************** Case 49(end) ************** *************** Case 50 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) > (select c1 from t3); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |89806| |1 | NESTED-LOOP JOIN | |50000 |82757| |2 | PX COORDINATOR | |300 |290 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | MATERIAL | |500 |573 | |7 | PX COORDINATOR | |500 |389 | |8 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |9 | PX PARTITION ITERATOR| |500 |342 | |10| TABLE SCAN |t1 |500 |342 | |11| PX COORDINATOR | |200 |149 | |12| EXCHANGE OUT DISTR |:EX30000|200 |140 | |13| PX PARTITION ITERATOR | |200 |140 | |14| TABLE SCAN |t3 |200 |140 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1]), filter(nil) 12 - output([t3.c1]), filter(nil), dop=1 13 - output([t3.c1]), filter(nil) 14 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$2" "opt.t3"@"SEL$2") END_OUTLINE_DATA */ *************** Case 50(end) ************** *************** Case 51 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) > (select t3.c1 from t3, t4); =============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |104032| |1 | NESTED-LOOP JOIN | |50000 |82757 | |2 | PX COORDINATOR | |300 |290 | |3 | EXCHANGE OUT DISTR |:EX10000 |300 |205 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | MATERIAL | |500 |573 | |7 | PX COORDINATOR | |500 |389 | |8 | EXCHANGE OUT DISTR |:EX20000 |500 |342 | |9 | PX PARTITION ITERATOR | |500 |342 | |10| TABLE SCAN |t1 |500 |342 | |11| NESTED-LOOP JOIN CARTESIAN| |20000 |14374 | |12| PX COORDINATOR | |200 |149 | |13| EXCHANGE OUT DISTR |:EX30000 |200 |140 | |14| PX PARTITION ITERATOR | |200 |140 | |15| TABLE SCAN |t3 |200 |140 | |16| MATERIAL | |100 |73 | |17| TABLE SCAN |t4(idx_t4_c2)|100 |54 | =============================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1]), filter(nil), conds(nil), nl_params_(nil) 12 - output([t3.c1]), filter(nil) 13 - output([t3.c1]), filter(nil), dop=1 14 - output([t3.c1]), filter(nil) 15 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 16 - output([1]), filter(nil) 17 - output([1]), filter(nil), access([t4.c2]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") LEADING(@"SEL$2" ("opt.t3"@"SEL$2" "opt.t4"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" )) FULL(@"SEL$2" "opt.t3"@"SEL$2") INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2") END_OUTLINE_DATA */ *************** Case 51(end) ************** *************** Case 52 *************** SQL: select * from t1,t2 where t1.c1 > (select c1 from t2); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |43515| |1 | NESTED-LOOP JOIN CARTESIAN| |50000 |36409| |2 | PX COORDINATOR | |300 |290 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | MATERIAL | |167 |215 | |7 | PX COORDINATOR | |167 |154 | |8 | EXCHANGE OUT DISTR |:EX20000|167 |138 | |9 | PX PARTITION ITERATOR | |167 |138 | |10| TABLE SCAN |t1 |167 |138 | |11| PX COORDINATOR | |300 |206 | |12| EXCHANGE OUT DISTR |:EX30000|300 |192 | |13| PX PARTITION ITERATOR | |300 |192 | |14| TABLE SCAN |t2 |300 |192 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t2.c1]), filter(nil) 12 - output([t2.c1]), filter(nil), dop=1 13 - output([t2.c1]), filter(nil) 14 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$2" "opt.t2"@"SEL$2") END_OUTLINE_DATA */ *************** Case 52(end) ************** *************** Case 53 *************** SQL: select /*+use_nl(t2) leading(t1 t2)*/ * from t1,t2 where t2.c1 > (select 1); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |114989| |1 | PX COORDINATOR | |500 |389 | |2 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |3 | PX PARTITION ITERATOR | |500 |342 | |4 | TABLE SCAN |t1 |500 |342 | |5 | MATERIAL | |300 |621 | |6 | PX COORDINATOR | |300 |290 | |7 | EXCHANGE OUT DISTR |:EX20000|300 |205 | |8 | PX PARTITION ITERATOR | |300 |205 | |9 | TABLE SCAN |t2 |300 |205 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */ *************** Case 53(end) ************** *************** Case 54 *************** SQL: select /*+use_nl(t2) leading(t1 t2)*/ * from t1,t2 where t1.c1 > (select 1); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |114989| |1 | PX COORDINATOR | |500 |389 | |2 | EXCHANGE OUT DISTR |:EX10000|500 |342 | |3 | PX PARTITION ITERATOR | |500 |342 | |4 | TABLE SCAN |t1 |500 |342 | |5 | MATERIAL | |300 |621 | |6 | PX COORDINATOR | |300 |290 | |7 | EXCHANGE OUT DISTR |:EX20000|300 |205 | |8 | PX PARTITION ITERATOR | |300 |205 | |9 | TABLE SCAN |t2 |300 |205 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */ *************** Case 54(end) ************** *************** Case 55 *************** SQL: select /*+use_nl(t1) leading(t2 t1)*/ * from t1,t2 where t2.c1 > (select 1); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |108575| |1 | PX COORDINATOR | |300 |290 | |2 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |3 | PX PARTITION ITERATOR | |300 |205 | |4 | TABLE SCAN |t2 |300 |205 | |5 | MATERIAL | |500 |573 | |6 | PX COORDINATOR | |500 |389 | |7 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |8 | PX PARTITION ITERATOR | |500 |342 | |9 | TABLE SCAN |t1 |500 |342 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 55(end) ************** *************** Case 56 *************** SQL: select /*+use_nl(t1) leading(t2 t1)*/ * from t1,t2 where t1.c1 > (select 1); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |108575| |1 | PX COORDINATOR | |300 |290 | |2 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |3 | PX PARTITION ITERATOR | |300 |205 | |4 | TABLE SCAN |t2 |300 |205 | |5 | MATERIAL | |500 |573 | |6 | PX COORDINATOR | |500 |389 | |7 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |8 | PX PARTITION ITERATOR | |500 |342 | |9 | TABLE SCAN |t1 |500 |342 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */ *************** Case 56(end) ************** *************** Case 57 *************** SQL: select * from t1,t2,t3 where (t2.c1 + t1.c1) > (select 1); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |10000000 |7669251| |1 | NESTED-LOOP JOIN | |50000 |70198 | |2 | PX COORDINATOR | |300 |290 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |205 | |4 | PX PARTITION ITERATOR | |300 |205 | |5 | TABLE SCAN |t2 |300 |205 | |6 | MATERIAL | |500 |573 | |7 | PX COORDINATOR | |500 |389 | |8 | EXCHANGE OUT DISTR |:EX20000|500 |342 | |9 | PX PARTITION ITERATOR| |500 |342 | |10| TABLE SCAN |t1 |500 |342 | |11| MATERIAL | |200 |426 | |12| PX COORDINATOR | |200 |205 | |13| EXCHANGE OUT DISTR |:EX30000|200 |149 | |14| PX PARTITION ITERATOR | |200 |149 | |15| TABLE SCAN |t3 |200 |149 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t2.c1 + t1.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), dop=1 14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 15 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t3"@"SEL$1") END_OUTLINE_DATA */ *************** Case 57(end) ************** *************** Case 58 *************** SQL: select * from t1,t2,t3 where (t2.c1 + t1.c1) > (select t4.c1 from t4, t5); ================================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------------- |0 |SUBPLAN FILTER | |10000000 |9083521| |1 | NESTED-LOOP JOIN CARTESIAN| |10000000 |7681810| |2 | NESTED-LOOP JOIN | |50000 |82757 | |3 | PX COORDINATOR | |300 |290 | |4 | EXCHANGE OUT DISTR |:EX10000 |300 |205 | |5 | PX PARTITION ITERATOR | |300 |205 | |6 | TABLE SCAN |t2 |300 |205 | |7 | MATERIAL | |500 |573 | |8 | PX COORDINATOR | |500 |389 | |9 | EXCHANGE OUT DISTR |:EX20000 |500 |342 | |10| PX PARTITION ITERATOR| |500 |342 | |11| TABLE SCAN |t1 |500 |342 | |12| MATERIAL | |200 |426 | |13| PX COORDINATOR | |200 |205 | |14| EXCHANGE OUT DISTR |:EX30000 |200 |149 | |15| PX PARTITION ITERATOR | |200 |149 | |16| TABLE SCAN |t3 |200 |149 | |17| NESTED-LOOP JOIN CARTESIAN| |30000 |21492 | |18| PX COORDINATOR | |300 |191 | |19| EXCHANGE OUT DISTR |:EX40000 |300 |162 | |20| PX PARTITION ITERATOR | |300 |162 | |21| TABLE SCAN |t5(idx_t5_c2)|300 |162 | |22| MATERIAL | |100 |73 | |23| TABLE SCAN |t4(idx_t4_c2)|100 |54 | ================================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t2.c1 + t1.c1 > ?]), nl_params_(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), dop=1 15 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 16 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]) 17 - output([t4.c1]), filter(nil), conds(nil), nl_params_(nil) 18 - output([1]), filter(nil) 19 - output([1]), filter(nil), dop=1 20 - output([1]), filter(nil) 21 - output([1]), filter(nil), access([t5.c2]), partitions(p[0-2]) 22 - output([t4.c1]), filter(nil) 23 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t3"@"SEL$1") LEADING(@"SEL$2" ("opt.t5"@"SEL$2" "opt.t4"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" )) INDEX(@"SEL$2" "opt.t5"@"SEL$2" "idx_t5_c2") INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2") END_OUTLINE_DATA */ *************** Case 58(end) ************** *************** Case 59 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t3.c1 from t3) and t1.c1 > (select t4.c1 from t4); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |SUBPLAN FILTER | |56 |258 | |1 | PX COORDINATOR | |56 |48 | |2 | EXCHANGE OUT DISTR |:EX10000 |56 |45 | |3 | PX PARTITION ITERATOR| |56 |45 | |4 | TABLE SCAN |t1 |56 |45 | |5 | PX COORDINATOR | |200 |149 | |6 | EXCHANGE OUT DISTR |:EX20000 |200 |140 | |7 | PX PARTITION ITERATOR| |200 |140 | |8 | TABLE SCAN |t3 |200 |140 | |9 | TABLE SCAN |t4(idx_t4_c2)|100 |54 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)], [subquery(2)]), init_plan_idxs_(nil) 1 - output([1]), filter(nil) 2 - output([1]), filter(nil), dop=1 3 - output([1]), filter(nil) 4 - output([1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 5 - output([t3.c1]), filter(nil) 6 - output([t3.c1]), filter(nil), dop=1 7 - output([t3.c1]), filter(nil) 8 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 9 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$2" "opt.t3"@"SEL$2") INDEX(@"SEL$3" "opt.t4"@"SEL$3" "idx_t4_c2") END_OUTLINE_DATA */ *************** Case 59(end) ************** *************** Case 60 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t3.c1 from t3) order by (select t4.c1 from t4); =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- |0 |SUBPLAN FILTER | |167 |391 | |1 | SUBPLAN FILTER | |167 |314 | |2 | PX COORDINATOR | |167 |142 | |3 | EXCHANGE OUT DISTR |:EX10000 |167 |134 | |4 | PX PARTITION ITERATOR| |167 |134 | |5 | TABLE SCAN |t1 |167 |134 | |6 | PX COORDINATOR | |200 |149 | |7 | EXCHANGE OUT DISTR |:EX20000 |200 |140 | |8 | PX PARTITION ITERATOR| |200 |140 | |9 | TABLE SCAN |t3 |200 |140 | |10| TABLE SCAN |t4(idx_t4_c2)|100 |54 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([1]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 2 - output([1]), filter(nil) 3 - output([1]), filter(nil), dop=1 4 - output([1]), filter(nil) 5 - output([1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 6 - output([t3.c1]), filter(nil) 7 - output([t3.c1]), filter(nil), dop=1 8 - output([t3.c1]), filter(nil) 9 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 10 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$2" "opt.t3"@"SEL$2") INDEX(@"SEL$3" "opt.t4"@"SEL$3" "idx_t4_c2") END_OUTLINE_DATA */ *************** Case 60(end) ************** *************** Case 61 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t4.c1 from t3, t4); ============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------------- |0 |SUBPLAN FILTER | |167 |14539| |1 | PX COORDINATOR | |167 |142 | |2 | EXCHANGE OUT DISTR |:EX10000 |167 |134 | |3 | PX PARTITION ITERATOR | |167 |134 | |4 | TABLE SCAN |t1 |167 |134 | |5 | NESTED-LOOP JOIN CARTESIAN| |20000 |14374| |6 | PX COORDINATOR | |200 |149 | |7 | EXCHANGE OUT DISTR |:EX20000 |200 |140 | |8 | PX PARTITION ITERATOR | |200 |140 | |9 | TABLE SCAN |t3 |200 |140 | |10| MATERIAL | |100 |73 | |11| TABLE SCAN |t4(idx_t4_c2)|100 |54 | ============================================================== Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([1]), filter(nil) 2 - output([1]), filter(nil), dop=1 3 - output([1]), filter(nil) 4 - output([1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 5 - output([t4.c1]), filter(nil), conds(nil), nl_params_(nil) 6 - output([1]), filter(nil) 7 - output([1]), filter(nil), dop=1 8 - output([1]), filter(nil) 9 - output([1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 10 - output([t4.c1]), filter(nil) 11 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t1"@"SEL$1") LEADING(@"SEL$2" ("opt.t3"@"SEL$2" "opt.t4"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" )) FULL(@"SEL$2" "opt.t3"@"SEL$2") INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2") END_OUTLINE_DATA */ *************** Case 61(end) ************** *************** Case 62 *************** SQL: select /*+qb_name(select_1)*/* from t4; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |100 |92 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 62(end) ************** *************** Case 63 *************** SQL: select /*+qb_name(select_1) qb_name(select_2)*/* from t4; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |100 |92 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ *************** Case 63(end) ************** *************** Case 64 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select t7.c1 from t7 join t8); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |10000 |10934| |1 | NESTED-LOOP SEMI JOIN | |100 |3745 | |2 | TABLE SCAN |t0 |100 |90 | |3 | SUBPLAN SCAN |VIEW1|1 |36 | |4 | NESTED-LOOP JOIN CARTESIAN| |1 |36 | |5 | TABLE GET |t7 |1 |36 | |6 | TABLE SCAN |t8 |100 |88 | |7 | MATERIAL | |100 |113 | |8 | TABLE SCAN |t20 |100 |95 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([1]), filter(nil), conds(nil), nl_params_([t0.c1]) 2 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) 3 - output([1]), filter(nil), access([VIEW1.c1]) 4 - output([t7.c1]), filter(nil), conds(nil), nl_params_(nil) 5 - output([t7.c1]), filter(nil), access([t7.c1]), partitions(p0) 6 - output([1]), filter(nil), access([t8.c1]), partitions(p0) 7 - output([t20.c1]), filter(nil) 8 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" )"opt.t20"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t20"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t20"@"SEL$1" )) USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" )) FULL(@"SEL$1" "opt.t0"@"SEL$1") LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) NO_USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt.t7"@"SEL$2") FULL(@"SEL$2" "opt.t8"@"SEL$2") FULL(@"SEL$1" "opt.t20"@"SEL$1") END_OUTLINE_DATA */ *************** Case 64(end) ************** *************** Case 65 *************** SQL: select t20.c1 from t20 join t0 join (t7 left join t8 on t7.c1 = t8.c1); ====================================================== |ID|OPERATOR |NAME|EST. ROWS|COST | ------------------------------------------------------ |0 |NESTED-LOOP JOIN CARTESIAN | |1000000 |715022| |1 | NESTED-LOOP JOIN CARTESIAN| |10000 |7277 | |2 | TABLE SCAN |t20 |100 |95 | |3 | MATERIAL | |100 |106 | |4 | TABLE SCAN |t0 |100 |88 | |5 | MATERIAL | |100 |106 | |6 | TABLE SCAN |t7 |100 |88 | ====================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 3 - output([1]), filter(nil) 4 - output([1]), filter(nil), access([t0.pk]), partitions(p0) 5 - output([1]), filter(nil) 6 - output([1]), filter(nil), access([t7.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" )"opt.t7"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t7"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t7"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt.t20"@"SEL$1") FULL(@"SEL$1" "opt.t0"@"SEL$1") FULL(@"SEL$1" "opt.t7"@"SEL$1") END_OUTLINE_DATA */ *************** Case 65(end) ************** *************** Case 66 *************** SQL: select t20.c1 from t20 left join (t7 left join t8 on t7.c1 = t8.c1) on t20.c1 = t7.c1 join t0; =================================================== |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |10000 |7277| |1 | TABLE SCAN |t20 |100 |95 | |2 | MATERIAL | |100 |106 | |3 | TABLE SCAN |t0 |100 |88 | =================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output([1]), filter(nil) 3 - output([1]), filter(nil), access([t0.pk]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt.t20"@"SEL$1") FULL(@"SEL$1" "opt.t0"@"SEL$1") END_OUTLINE_DATA */ *************** Case 66(end) ************** *************** Case 67 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select max(t7.c1) from t7 join t8); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |9459| |1 | TABLE SCAN |t20 |100 |95 | |2 | MATERIAL | |1 |9293| |3 | NESTED-LOOP JOIN | |1 |9293| |4 | SUBPLAN SCAN |VIEW1|1 |9181| |5 | SCALAR GROUP BY | |1 |9180| |6 | NESTED-LOOP JOIN CARTESIAN| |10000 |7270| |7 | TABLE SCAN |t7 |100 |88 | |8 | MATERIAL | |100 |106 | |9 | TABLE SCAN |t8 |100 |88 | |10| TABLE SCAN |t0 |100 |90 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output([1]), filter(nil) 3 - output([1]), filter(nil), conds([t0.c1 = VIEW1.max(t7.c1)]), nl_params_(nil) 4 - output([VIEW1.max(t7.c1)]), filter(nil), access([VIEW1.max(t7.c1)]) 5 - output([T_FUN_MAX(t7.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t7.c1)]) 6 - output([t7.c1]), filter(nil), conds(nil), nl_params_(nil) 7 - output([t7.c1]), filter(nil), access([t7.c1]), partitions(p0) 8 - output([1]), filter(nil) 9 - output([1]), filter(nil), access([t8.c1]), partitions(p0) 10 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))) USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt.t20"@"SEL$1") USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt.t7"@"SEL$2") FULL(@"SEL$2" "opt.t8"@"SEL$2") FULL(@"SEL$1" "opt.t0"@"SEL$1") END_OUTLINE_DATA */ *************** Case 67(end) ************** *************** Case 68 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select max(t7.c1) from t7 join t8) and t0.c1 in (select max(t7.c2) from t7); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |1 |9497| |1 | TABLE SCAN |t20 |100 |95 | |2 | MATERIAL | |1 |9402| |3 | NESTED-LOOP JOIN | |1 |9402| |4 | SUBPLAN SCAN |VIEW2|1 |109 | |5 | SCALAR GROUP BY | |1 |109 | |6 | TABLE SCAN |t7 |100 |90 | |7 | NESTED-LOOP JOIN | |1 |9293| |8 | SUBPLAN SCAN |VIEW1|1 |9181| |9 | SCALAR GROUP BY | |1 |9180| |10| NESTED-LOOP JOIN CARTESIAN| |10000 |7270| |11| TABLE SCAN |t7 |100 |88 | |12| MATERIAL | |100 |106 | |13| TABLE SCAN |t8 |100 |88 | |14| TABLE SCAN |t0 |100 |90 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output([1]), filter(nil) 3 - output([1]), filter(nil), conds([t0.c1 = VIEW2.max(t7.c2)]), nl_params_(nil) 4 - output([VIEW2.max(t7.c2)]), filter(nil), access([VIEW2.max(t7.c2)]) 5 - output([T_FUN_MAX(t7.c2)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t7.c2)]) 6 - output([t7.c2]), filter(nil), access([t7.c2]), partitions(p0) 7 - output([t0.c1]), filter(nil), conds([t0.c1 = VIEW1.max(t7.c1)]), nl_params_(nil) 8 - output([VIEW1.max(t7.c1)]), filter(nil), access([VIEW1.max(t7.c1)]) 9 - output([T_FUN_MAX(t7.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t7.c1)]) 10 - output([t7.c1]), filter(nil), conds(nil), nl_params_(nil) 11 - output([t7.c1]), filter(nil), access([t7.c1]), partitions(p0) 12 - output([1]), filter(nil) 13 - output([1]), filter(nil), access([t8.c1]), partitions(p0) 14 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("VIEW2"@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )))) USE_NL(@"SEL$1" ("VIEW2"@"SEL$1" "VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW2"@"SEL$1" "VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt.t20"@"SEL$1") USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) FULL(@"SEL$3" "opt.t7"@"SEL$3") USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt.t7"@"SEL$2") FULL(@"SEL$2" "opt.t8"@"SEL$2") FULL(@"SEL$1" "opt.t0"@"SEL$1") END_OUTLINE_DATA */ *************** Case 68(end) ************** *************** Case 69 *************** SQL: select t20.c1 from t20 join t0 where 1 in (select t7.c1 from t7 join t8); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |10000 |9547| |1 | NESTED-LOOP SEMI JOIN CARTESIAN| |100 |2365| |2 | TABLE SCAN |t20 |100 |95 | |3 | MATERIAL | |100 |237 | |4 | SUBPLAN SCAN |VIEW1|100 |219 | |5 | NESTED-LOOP JOIN CARTESIAN | |100 |205 | |6 | TABLE GET |t7 |1 |52 | |7 | TABLE SCAN |t8 |100 |88 | |8 | MATERIAL | |100 |106 | |9 | TABLE SCAN |t0 |100 |88 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 3 - output([1]), filter(nil) 4 - output([1]), filter(nil), access(nil) 5 - output([1]), filter(nil), conds(nil), nl_params_(nil) 6 - output([1]), filter(nil), access([t7.c1]), partitions(p0) 7 - output([1]), filter(nil), access([t8.c1]), partitions(p0) 8 - output([1]), filter(nil) 9 - output([1]), filter(nil), access([t0.pk]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "VIEW1"@"SEL$1" )"opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" )) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" )) FULL(@"SEL$1" "opt.t20"@"SEL$1") LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) NO_USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt.t7"@"SEL$2") FULL(@"SEL$2" "opt.t8"@"SEL$2") FULL(@"SEL$1" "opt.t0"@"SEL$1") END_OUTLINE_DATA */ *************** Case 69(end) **************