5994 lines
		
	
	
		
			265 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			5994 lines
		
	
	
		
			265 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
***************   Case 1   ***************
 | 
						|
 | 
						|
SQL: select /*+ log_level(debug)*/ * from hint.t1; 
 | 
						|
 | 
						|
===================================
 | 
						|
|ID|OPERATOR  |NAME|EST. ROWS|COST|
 | 
						|
-----------------------------------
 | 
						|
|0 |TABLE SCAN|t1  |100      |90  |
 | 
						|
===================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      LOG_LEVEL('debug')
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 1(end)  ************** 
 | 
						|
 | 
						|
***************   Case 2   ***************
 | 
						|
 | 
						|
SQL: select /*+ log_level('sql.opt:debug')*/ * from hint.t1; 
 | 
						|
 | 
						|
===================================
 | 
						|
|ID|OPERATOR  |NAME|EST. ROWS|COST|
 | 
						|
-----------------------------------
 | 
						|
|0 |TABLE SCAN|t1  |100      |90  |
 | 
						|
===================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      LOG_LEVEL('sql.opt:debug')
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 2(end)  ************** 
 | 
						|
 | 
						|
***************   Case 3   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(ta, tb) use_nl(tb)*/ * from hint.t1 as tb, opt.t1 as ta where tb.a = ta.c1; 
 | 
						|
 | 
						|
======================================================
 | 
						|
|ID|OPERATOR                |NAME    |EST. ROWS|COST |
 | 
						|
------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN        |        |100      |18746|
 | 
						|
|1 | PX COORDINATOR         |        |500      |389  |
 | 
						|
|2 |  EXCHANGE OUT DISTR    |:EX10000|500      |342  |
 | 
						|
|3 |   PX PARTITION ITERATOR|        |500      |342  |
 | 
						|
|4 |    TABLE SCAN          |ta      |500      |342  |
 | 
						|
|5 | TABLE GET              |tb      |1        |36   |
 | 
						|
======================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([tb.a], [tb.b], [ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([ta.c1])
 | 
						|
  1 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  2 - output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.tb"@"SEL$1" ) BC2HOST NONE)
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 3(end)  ************** 
 | 
						|
 | 
						|
***************   Case 4   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(ta, tb) use_bnl(tb)*/ * from hint.t1 as tb, opt.t1 as ta where tb.a = ta.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   SORT                      |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|8 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([tb.a], [tb.b], [ta.c1], [ta.c2]), filter(nil)
 | 
						|
  1 - output([tb.a], [tb.b], [ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  2 - output([tb.a], [tb.b], [ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      equal_conds([tb.a = ta.c1]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  6 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.tb"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 4(end)  ************** 
 | 
						|
 | 
						|
***************   Case 5   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(t1) use_nl(hint.t1)*/ * from hint.t2, hint.t1, opt.t1 where hint.t2.a = opt.t1.c1; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN    |        |10000    |8642|
 | 
						|
|1 | PX COORDINATOR               |        |100      |1334|
 | 
						|
|2 |  EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|3 |   MERGE JOIN                 |        |100      |1316|
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|6 |      TABLE SCAN              |t2      |100      |90  |
 | 
						|
|7 |    SORT                      |        |500      |1074|
 | 
						|
|8 |     PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|9 |      TABLE SCAN              |t1      |500      |342 |
 | 
						|
|10| MATERIAL                     |        |100      |127 |
 | 
						|
|11|  TABLE SCAN                  |t1      |100      |90  |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.a], [t2.b], [t1.a], [t1.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil)
 | 
						|
  2 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  3 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      equal_conds([t2.a = t1.c1]), other_conds(nil)
 | 
						|
  4 - output([t2.a], [t2.b]), filter(nil)
 | 
						|
  5 - (#keys=1, [t2.a]), output([t2.a], [t2.b]), filter(nil), is_single, dop=1
 | 
						|
  6 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  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])
 | 
						|
  10 - output([t1.a], [t1.b]), filter(nil)
 | 
						|
  11 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("hint.t2"@"SEL$1" "opt.t1"@"SEL$1" )"hint.t1"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 5(end)  ************** 
 | 
						|
 | 
						|
***************   Case 6   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(t1) use_bnl(hint.t1)*/ * from hint.t2, hint.t1, opt.t1 where hint.t2.a = opt.t1.c1; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                       |NAME    |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN     |        |10000    |8887|
 | 
						|
|1 | TABLE SCAN                    |t1      |100      |90  |
 | 
						|
|2 | MATERIAL                      |        |100      |1408|
 | 
						|
|3 |  PX COORDINATOR               |        |100      |1334|
 | 
						|
|4 |   EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|5 |    MERGE JOIN                 |        |100      |1316|
 | 
						|
|6 |     EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|7 |      EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|8 |       TABLE SCAN              |t2      |100      |90  |
 | 
						|
|9 |     SORT                      |        |500      |1074|
 | 
						|
|10|      PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|11|       TABLE SCAN              |t1      |500      |342 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.a], [t2.b], [t1.a], [t1.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  2 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil)
 | 
						|
  3 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil)
 | 
						|
  4 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  5 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      equal_conds([t2.a = t1.c1]), other_conds(nil)
 | 
						|
  6 - output([t2.a], [t2.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [t2.a]), output([t2.a], [t2.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  9 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  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" ("hint.t1"@"SEL$1" ("hint.t2"@"SEL$1" "opt.t1"@"SEL$1" )))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 6(end)  ************** 
 | 
						|
 | 
						|
***************   Case 7   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(t2, t1) use_merge(t1)*/ * from hint.t2, opt.t1 where t1.c1 = t2.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t2      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil)
 | 
						|
  1 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  2 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.a]), other_conds(nil)
 | 
						|
  3 - output([t2.a], [t2.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [t2.a]), output([t2.a], [t2.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.t2"@"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" "hint.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 7(end)  ************** 
 | 
						|
 | 
						|
***************   Case 8   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(hint.t1 idx_t1_a)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c1; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |            |100      |1847|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001    |100      |1828|
 | 
						|
|2 |  MERGE JOIN                 |            |100      |1828|
 | 
						|
|3 |   SORT                      |            |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |            |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |t1          |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |            |100      |613 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000    |100      |603 |
 | 
						|
|8 |     TABLE SCAN              |t1(idx_t1_a)|100      |603 |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.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([t1.a], [t1.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [t1.a]), output([t1.a], [t1.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "hint.t1"@"SEL$1" "idx_t1_a")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 8(end)  ************** 
 | 
						|
 | 
						|
***************   Case 9   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c2; 
 | 
						|
 | 
						|
=====================================================
 | 
						|
|ID|OPERATOR                |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------
 | 
						|
|0 |HASH JOIN               |        |490      |1061|
 | 
						|
|1 | TABLE SCAN             |t1      |100      |90  |
 | 
						|
|2 | PX COORDINATOR         |        |500      |389 |
 | 
						|
|3 |  EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | 
						|
|4 |   PX PARTITION ITERATOR|        |500      |342 |
 | 
						|
|5 |    TABLE SCAN          |t1      |500      |342 |
 | 
						|
=====================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.t1"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 9(end)  ************** 
 | 
						|
 | 
						|
***************   Case 10   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered use_nl(hint.t2 opt.t1)*/ * from (select * from t2) as tb, hint.t2, opt.t1; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                   |NAME    |EST. ROWS|COST    |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |        |15000000 |11435129|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|        |50000    |36567   |
 | 
						|
|2 |  TABLE SCAN               |t2      |100      |90      |
 | 
						|
|3 |  MATERIAL                 |        |500      |573     |
 | 
						|
|4 |   PX COORDINATOR          |        |500      |389     |
 | 
						|
|5 |    EXCHANGE OUT DISTR     |:EX10000|500      |342     |
 | 
						|
|6 |     PX PARTITION ITERATOR |        |500      |342     |
 | 
						|
|7 |      TABLE SCAN           |t1      |500      |342     |
 | 
						|
|8 | MATERIAL                  |        |300      |621     |
 | 
						|
|9 |  PX COORDINATOR           |        |300      |290     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000|300      |205     |
 | 
						|
|11|    PX PARTITION ITERATOR  |        |300      |205     |
 | 
						|
|12|     TABLE SCAN            |t2      |300      |205     |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.c1], [t2.c2], [t2.c3], [t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  4 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  12 - 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" (("hint.t2"@"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" ))
 | 
						|
      USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 10(end)  ************** 
 | 
						|
 | 
						|
***************   Case 11   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered use_bnl(hint.t2 opt.t1)*/ * from (select * from t2) as tb, hint.t2, opt.t1; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                   |NAME    |EST. ROWS|COST    |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |        |15000000 |11434982|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|        |50000    |36420   |
 | 
						|
|2 |  PX COORDINATOR           |        |500      |389     |
 | 
						|
|3 |   EXCHANGE OUT DISTR      |:EX10000|500      |342     |
 | 
						|
|4 |    PX PARTITION ITERATOR  |        |500      |342     |
 | 
						|
|5 |     TABLE SCAN            |t1      |500      |342     |
 | 
						|
|6 |  MATERIAL                 |        |100      |127     |
 | 
						|
|7 |   TABLE SCAN              |t2      |100      |90      |
 | 
						|
|8 | MATERIAL                  |        |300      |621     |
 | 
						|
|9 |  PX COORDINATOR           |        |300      |290     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000|300      |205     |
 | 
						|
|11|    PX PARTITION ITERATOR  |        |300      |205     |
 | 
						|
|12|     TABLE SCAN            |t2      |300      |205     |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.c1], [t2.c2], [t2.c3], [t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  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([t2.a], [t2.b]), filter(nil)
 | 
						|
  7 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  12 - 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" "hint.t2"@"SEL$1" )"opt.t2"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 11(end)  ************** 
 | 
						|
 | 
						|
***************   Case 12   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(tb, opt.t1) use_nl(hint.t2 opt.t1)*/ * from (select * from t2) as tb, hint.t2, opt.t1; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                   |NAME    |EST. ROWS|COST    |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |        |15000000 |10879962|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|        |150000   |108575  |
 | 
						|
|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                  |        |100      |127     |
 | 
						|
|12|  TABLE SCAN               |t2      |100      |90      |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.c1], [t2.c2], [t2.c3], [t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), 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.a], [t2.b]), filter(nil)
 | 
						|
  12 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"hint.t2"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t2"@"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" "hint.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 12(end)  ************** 
 | 
						|
 | 
						|
***************   Case 13   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(tb, opt.t1) use_bnl(hint.t2, opt.t1)*/ * from (select * from t2) as tb, hint.t2, opt.t1; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                   |NAME    |EST. ROWS|COST    |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |        |15000000 |10879962|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|        |150000   |108575  |
 | 
						|
|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                  |        |100      |127     |
 | 
						|
|12|  TABLE SCAN               |t2      |100      |90      |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.c1], [t2.c2], [t2.c3], [t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), 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.a], [t2.b]), filter(nil)
 | 
						|
  12 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"hint.t2"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t2"@"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" "hint.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 13(end)  ************** 
 | 
						|
 | 
						|
***************   Case 14   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1,opt.t2 use index (idx_t1_c2) where opt.t1.c1 = opt.t2.c2; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |290      |1651|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|290      |1541|
 | 
						|
|2 |  HASH JOIN                  |        |290      |1541|
 | 
						|
|3 |   PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|4 |    TABLE SCAN               |t1      |500      |342 |
 | 
						|
|5 |   EXCHANGE IN DISTR         |        |300      |290 |
 | 
						|
|6 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|300      |205 |
 | 
						|
|7 |     PX PARTITION ITERATOR   |        |300      |205 |
 | 
						|
|8 |      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.c2]), other_conds(nil)
 | 
						|
  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 - (#keys=1, [t2.c2]), output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  8 - 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_HASH(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 14(end)  ************** 
 | 
						|
 | 
						|
***************   Case 15   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(t1 idx_t1_c2)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c2; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |             |490      |1585|
 | 
						|
|1 | PX COORDINATOR MERGE SORT |             |500      |1122|
 | 
						|
|2 |  EXCHANGE OUT DISTR       |:EX10000     |500      |1074|
 | 
						|
|3 |   SORT                    |             |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |500      |342 |
 | 
						|
|5 |     TABLE SCAN            |t1(idx_t1_c2)|500      |342 |
 | 
						|
|6 | TABLE SCAN                |t1           |100      |90  |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, 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([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 15(end)  ************** 
 | 
						|
 | 
						|
***************   Case 16   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_t1_c2)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c2; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |             |490      |1585|
 | 
						|
|1 | PX COORDINATOR MERGE SORT |             |500      |1122|
 | 
						|
|2 |  EXCHANGE OUT DISTR       |:EX10000     |500      |1074|
 | 
						|
|3 |   SORT                    |             |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |500      |342 |
 | 
						|
|5 |     TABLE SCAN            |t1(idx_t1_c2)|500      |342 |
 | 
						|
|6 | TABLE SCAN                |t1           |100      |90  |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, 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([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 16(end)  ************** 
 | 
						|
 | 
						|
***************   Case 17   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_t1_c2) use_merge(hint.t2, hint.t1)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c2; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |             |490      |1585|
 | 
						|
|1 | PX COORDINATOR MERGE SORT |             |500      |1122|
 | 
						|
|2 |  EXCHANGE OUT DISTR       |:EX10000     |500      |1074|
 | 
						|
|3 |   SORT                    |             |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |500      |342 |
 | 
						|
|5 |     TABLE SCAN            |t1(idx_t1_c2)|500      |342 |
 | 
						|
|6 | TABLE SCAN                |t1           |100      |90  |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, 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([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 17(end)  ************** 
 | 
						|
 | 
						|
***************   Case 18   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_t1_c2) use_merge(test hint.t2) use_nl(hint.t1)*/ * from opt.t1, hint.t1 where hint.t1.a = opt.t1.c2; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |             |490      |1585|
 | 
						|
|1 | TABLE SCAN                |t1           |100      |90  |
 | 
						|
|2 | PX COORDINATOR MERGE SORT |             |500      |1122|
 | 
						|
|3 |  EXCHANGE OUT DISTR       |:EX10000     |500      |1074|
 | 
						|
|4 |   SORT                    |             |500      |1074|
 | 
						|
|5 |    PX PARTITION ITERATOR  |             |500      |342 |
 | 
						|
|6 |     TABLE SCAN            |t1(idx_t1_c2)|500      |342 |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.t1"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 18(end)  ************** 
 | 
						|
 | 
						|
***************   Case 19   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(ta idx_t1_c2) use_merge(test) use_nl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
===============================================================
 | 
						|
|ID|OPERATOR                     |NAME         |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |             |100      |811 |
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001     |100      |792 |
 | 
						|
|2 |  HASH JOIN                  |             |100      |792 |
 | 
						|
|3 |   EXCHANGE IN DISTR         |             |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb           |100      |90  |
 | 
						|
|6 |   PX PARTITION ITERATOR     |             |500      |342 |
 | 
						|
|7 |    TABLE SCAN               |ta(idx_t1_c2)|500      |342 |
 | 
						|
===============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 19(end)  ************** 
 | 
						|
 | 
						|
***************   Case 20   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(ta idx_t1_c2) use_merge(test) use_bnl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
===============================================================
 | 
						|
|ID|OPERATOR                     |NAME         |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |             |100      |811 |
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001     |100      |792 |
 | 
						|
|2 |  HASH JOIN                  |             |100      |792 |
 | 
						|
|3 |   EXCHANGE IN DISTR         |             |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb           |100      |90  |
 | 
						|
|6 |   PX PARTITION ITERATOR     |             |500      |342 |
 | 
						|
|7 |    TABLE SCAN               |ta(idx_t1_c2)|500      |342 |
 | 
						|
===============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 20(end)  ************** 
 | 
						|
 | 
						|
***************   Case 21   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_t1_c2) use_merge(opt.t2) use_nl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 21(end)  ************** 
 | 
						|
 | 
						|
***************   Case 22   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_t1_c2) use_merge(opt.t2) use_bnl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 22(end)  ************** 
 | 
						|
 | 
						|
***************   Case 23   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_test) use_merge(opt.t2) use_nl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 23(end)  ************** 
 | 
						|
 | 
						|
***************   Case 24   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_test) use_merge(opt.t2) use_bnl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  4 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.tb"@"SEL$1" "opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.ta"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 24(end)  ************** 
 | 
						|
 | 
						|
***************   Case 25   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_test) use_merge(ta tb) use_nl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   SORT                      |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|8 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  6 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.tb"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 25(end)  ************** 
 | 
						|
 | 
						|
***************   Case 26   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(opt.t1 idx_test) use_merge(ta tb) use_bnl(tb)*/ * from opt.t1 as ta, hint.t1 as tb where ta.c1 = tb.a; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1334|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1316|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1316|
 | 
						|
|3 |   SORT                      |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |ta      |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|8 |     TABLE SCAN              |tb      |100      |90  |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), local merge sort
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  6 - output([tb.a], [tb.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [tb.a]), output([tb.a], [tb.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.tb"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 26(end)  ************** 
 | 
						|
 | 
						|
***************   Case 27   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1,hint.t1 use index (idx_t1_c2, idx_t1_a) where opt.t1.c1 = hint.t1.a; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |            |100      |1847|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001    |100      |1828|
 | 
						|
|2 |  MERGE JOIN                 |            |100      |1828|
 | 
						|
|3 |   SORT                      |            |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |            |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |t1          |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |            |100      |613 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000    |100      |603 |
 | 
						|
|8 |     TABLE SCAN              |t1(idx_t1_a)|100      |603 |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t1.a]), 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([t1.a], [t1.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [t1.a]), output([t1.a], [t1.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "hint.t1"@"SEL$1" "idx_t1_a")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 27(end)  ************** 
 | 
						|
 | 
						|
***************   Case 28   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1,hint.t1 use index (idx_t1_a, idx_t1_c2) where opt.t1.c1 = hint.t1.a; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |            |100      |1847|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001    |100      |1828|
 | 
						|
|2 |  MERGE JOIN                 |            |100      |1828|
 | 
						|
|3 |   SORT                      |            |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |            |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |t1          |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |            |100      |613 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000    |100      |603 |
 | 
						|
|8 |     TABLE SCAN              |t1(idx_t1_a)|100      |603 |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t1.a]), 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([t1.a], [t1.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [t1.a]), output([t1.a], [t1.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "hint.t1"@"SEL$1" "idx_t1_a")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 28(end)  ************** 
 | 
						|
 | 
						|
***************   Case 29   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1,hint.t1 force index (idx_t1_a, idx_t1_c2) where opt.t1.c1 = hint.t1.a; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |            |100      |1847|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001    |100      |1828|
 | 
						|
|2 |  MERGE JOIN                 |            |100      |1828|
 | 
						|
|3 |   SORT                      |            |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |            |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |t1          |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |            |100      |613 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000    |100      |603 |
 | 
						|
|8 |     TABLE SCAN              |t1(idx_t1_a)|100      |603 |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t1.a]), 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([t1.a], [t1.b]), filter(nil)
 | 
						|
  7 - (#keys=1, [t1.a]), output([t1.a], [t1.b]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "hint.t1"@"SEL$1" "idx_t1_a")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 29(end)  ************** 
 | 
						|
 | 
						|
***************   Case 30   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4 force index (idx_t4_c2,idx_t4_c3,idx_t4_c2_c3) where opt.t4.c1 = opt.t4.c2; 
 | 
						|
 | 
						|
============================================
 | 
						|
|ID|OPERATOR  |NAME         |EST. ROWS|COST|
 | 
						|
--------------------------------------------
 | 
						|
|0 |TABLE SCAN|t4(idx_t4_c3)|1        |101 |
 | 
						|
============================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = t4.c2]), 
 | 
						|
      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 30(end)  ************** 
 | 
						|
 | 
						|
***************   Case 31   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4 ignore index (idx_t4_c2,idx_t4_c3,idx_t4_c2_c3) where opt.t4.c1 = opt.t4.c2; 
 | 
						|
 | 
						|
===================================
 | 
						|
|ID|OPERATOR  |NAME|EST. ROWS|COST|
 | 
						|
-----------------------------------
 | 
						|
|0 |TABLE SCAN|t4  |1        |101 |
 | 
						|
===================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = t4.c2]), 
 | 
						|
      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 31(end)  ************** 
 | 
						|
 | 
						|
***************   Case 32   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4 ignore index (idx_t4_c2,idx_t4_c3) where opt.t4.c1 = opt.t4.c2; 
 | 
						|
 | 
						|
===============================================
 | 
						|
|ID|OPERATOR  |NAME            |EST. ROWS|COST|
 | 
						|
-----------------------------------------------
 | 
						|
|0 |TABLE SCAN|t4(idx_t4_c2_c3)|1        |101 |
 | 
						|
===============================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = t4.c2]), 
 | 
						|
      access([t4.c1], [t4.c2], [t4.c3]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 32(end)  ************** 
 | 
						|
 | 
						|
***************   Case 33   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4, hint.t1 ignore index (idx_t4_c2,idx_t4_c3, idx_t1_a) where opt.t4.c1 = hint.t1.a; 
 | 
						|
 | 
						|
====================================
 | 
						|
|ID|OPERATOR   |NAME|EST. ROWS|COST|
 | 
						|
------------------------------------
 | 
						|
|0 |MERGE JOIN |    |100      |269 |
 | 
						|
|1 | TABLE SCAN|t4  |100      |92  |
 | 
						|
|2 | TABLE SCAN|t1  |100      |90  |
 | 
						|
====================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t4.c1], [t4.c2], [t4.c3], [t1.a], [t1.b]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.a]), other_conds(nil)
 | 
						|
  1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), 
 | 
						|
      access([t4.c1], [t4.c2], [t4.c3]), partitions(p0)
 | 
						|
  2 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t4"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 33(end)  ************** 
 | 
						|
 | 
						|
***************   Case 34   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4 as ta, hint.t1 as tb ignore index (idx_t4_c2,idx_t4_c3, idx_t1_a) where ta.c1 = tb.a; 
 | 
						|
 | 
						|
====================================
 | 
						|
|ID|OPERATOR   |NAME|EST. ROWS|COST|
 | 
						|
------------------------------------
 | 
						|
|0 |MERGE JOIN |    |100      |269 |
 | 
						|
|1 | TABLE SCAN|ta  |100      |92  |
 | 
						|
|2 | TABLE SCAN|tb  |100      |90  |
 | 
						|
====================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [ta.c3], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [ta.c3]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2], [ta.c3]), partitions(p0)
 | 
						|
  2 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 34(end)  ************** 
 | 
						|
 | 
						|
***************   Case 35   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1 use index(idx_yeti, idx_t1_c2) where opt.t1.c1 = opt.t1.c1; 
 | 
						|
 | 
						|
=========================================================
 | 
						|
|ID|OPERATOR               |NAME         |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR         |             |500      |431 |
 | 
						|
|1 | EXCHANGE OUT DISTR    |:EX10000     |500      |384 |
 | 
						|
|2 |  PX PARTITION ITERATOR|             |500      |384 |
 | 
						|
|3 |   TABLE SCAN          |t1(idx_t1_c2)|500      |384 |
 | 
						|
=========================================================
 | 
						|
 | 
						|
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([t1.c1 = t1.c1]), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 35(end)  ************** 
 | 
						|
 | 
						|
***************   Case 36   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t4 as ta, hint.t1 as tb ignore index (idx_test, idx_t1_a) where ta.c1 = tb.a; 
 | 
						|
 | 
						|
====================================
 | 
						|
|ID|OPERATOR   |NAME|EST. ROWS|COST|
 | 
						|
------------------------------------
 | 
						|
|0 |MERGE JOIN |    |100      |269 |
 | 
						|
|1 | TABLE SCAN|ta  |100      |92  |
 | 
						|
|2 | TABLE SCAN|tb  |100      |90  |
 | 
						|
====================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [ta.c3], [tb.a], [tb.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.a]), other_conds(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [ta.c3]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2], [ta.c3]), partitions(p0)
 | 
						|
  2 - output([tb.a], [tb.b]), filter(nil), 
 | 
						|
      access([tb.a], [tb.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "hint.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tb"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 36(end)  ************** 
 | 
						|
 | 
						|
***************   Case 37   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1 use index(index_t1_c2) where opt.t1.c2 = (select hint.t1.a from hint.t1,opt.t2 use index(idx_t1_a) where opt.t2.c1 = hint.t1.b); 
 | 
						|
 | 
						|
=================================================================
 | 
						|
|ID|OPERATOR                       |NAME         |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------------
 | 
						|
|0 |SUBPLAN FILTER                 |             |5        |947 |
 | 
						|
|1 | PX COORDINATOR                |             |5        |38  |
 | 
						|
|2 |  EXCHANGE OUT DISTR           |:EX10000     |5        |37  |
 | 
						|
|3 |   PX PARTITION ITERATOR       |             |5        |37  |
 | 
						|
|4 |    TABLE SCAN                 |t1(idx_t1_c2)|5        |37  |
 | 
						|
|5 | PX COORDINATOR                |             |100      |909 |
 | 
						|
|6 |  EXCHANGE OUT DISTR           |:EX20001     |100      |895 |
 | 
						|
|7 |   MERGE JOIN                  |             |100      |895 |
 | 
						|
|8 |    SORT                       |             |100      |227 |
 | 
						|
|9 |     EXCHANGE IN DISTR         |             |100      |100 |
 | 
						|
|10|      EXCHANGE OUT DISTR (PKEY)|:EX20000     |100      |90  |
 | 
						|
|11|       TABLE SCAN              |t1           |100      |90  |
 | 
						|
|12|    SORT                       |             |300      |554 |
 | 
						|
|13|     PX PARTITION ITERATOR     |             |300      |192 |
 | 
						|
|14|      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([t1.a]), filter(nil)
 | 
						|
  6 - output([t1.a]), filter(nil), dop=1
 | 
						|
  7 - output([t1.a]), filter(nil), 
 | 
						|
      equal_conds([t2.c1 = t1.b]), other_conds(nil)
 | 
						|
  8 - output([t1.a], [t1.b]), filter(nil), sort_keys([t1.b, ASC])
 | 
						|
  9 - output([t1.b], [t1.a]), filter(nil)
 | 
						|
  10 - (#keys=1, [t1.b]), output([t1.b], [t1.a]), filter(nil), is_single, dop=1
 | 
						|
  11 - output([t1.b], [t1.a]), filter(nil), 
 | 
						|
      access([t1.b], [t1.a]), partitions(p0)
 | 
						|
  12 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  13 - output([t2.c1]), filter(nil)
 | 
						|
  14 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      LEADING(@"SEL$2" ("hint.t1"@"SEL$2" "opt.t2"@"SEL$2" ))
 | 
						|
      USE_MERGE(@"SEL$2" ("opt.t2"@"SEL$2" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$2" ("opt.t2"@"SEL$2" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$2" "hint.t1"@"SEL$2")
 | 
						|
      FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 37(end)  ************** 
 | 
						|
 | 
						|
***************   Case 38   ***************
 | 
						|
 | 
						|
SQL: select /*+ idex(yeti idx_t1_c2)*/ * from (select /*+ idex(opt.t4 idx_t4_c2))*/ * from hint.t1, opt.t4 where hint.t1.a = opt.t4.c2) as yeti, opt.t1 where yeti.a = opt.t1.c2; 
 | 
						|
 | 
						|
================================================================
 | 
						|
|ID|OPERATOR                   |NAME            |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |                |490      |1764|
 | 
						|
|1 | MERGE JOIN                |                |100      |269 |
 | 
						|
|2 |  TABLE SCAN               |t4(idx_t4_c2_c3)|100      |92  |
 | 
						|
|3 |  TABLE SCAN               |t1              |100      |90  |
 | 
						|
|4 | PX COORDINATOR MERGE SORT |                |500      |1122|
 | 
						|
|5 |  EXCHANGE OUT DISTR       |:EX10000        |500      |1074|
 | 
						|
|6 |   SORT                    |                |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR  |                |500      |342 |
 | 
						|
|8 |     TABLE SCAN            |t1(idx_t1_c2)   |500      |342 |
 | 
						|
================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t1.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t4.c2]), other_conds(nil)
 | 
						|
  2 - output([t4.c2], [t4.c1], [t4.c3]), filter(nil), 
 | 
						|
      access([t4.c2], [t4.c1], [t4.c3]), partitions(p0)
 | 
						|
  3 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.t4"@"SEL$1" "hint.t1"@"SEL$1" )"opt.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 38(end)  ************** 
 | 
						|
 | 
						|
***************   Case 39   ***************
 | 
						|
 | 
						|
SQL: select /*+ idex(ta idx_t1_c2)*/ * from (select /*+ idex(opt.t4 idx_t4_c2))*/ * from hint.t1, opt.t4 where hint.t1.a = opt.t4.c2) as yeti, opt.t1 as ta where yeti.a = ta.c2; 
 | 
						|
 | 
						|
================================================================
 | 
						|
|ID|OPERATOR                   |NAME            |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |                |490      |1764|
 | 
						|
|1 | MERGE JOIN                |                |100      |269 |
 | 
						|
|2 |  TABLE SCAN               |t4(idx_t4_c2_c3)|100      |92  |
 | 
						|
|3 |  TABLE SCAN               |t1              |100      |90  |
 | 
						|
|4 | PX COORDINATOR MERGE SORT |                |500      |1122|
 | 
						|
|5 |  EXCHANGE OUT DISTR       |:EX10000        |500      |1074|
 | 
						|
|6 |   SORT                    |                |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR  |                |500      |342 |
 | 
						|
|8 |     TABLE SCAN            |ta(idx_t1_c2)   |500      |342 |
 | 
						|
================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3], [ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      equal_conds([t1.a = ta.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t4.c2]), other_conds(nil)
 | 
						|
  2 - output([t4.c2], [t4.c1], [t4.c3]), filter(nil), 
 | 
						|
      access([t4.c2], [t4.c1], [t4.c3]), partitions(p0)
 | 
						|
  3 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC])
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t4"@"SEL$1" "hint.t1"@"SEL$1" )"opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 39(end)  ************** 
 | 
						|
 | 
						|
***************   Case 40   ***************
 | 
						|
 | 
						|
SQL: select /*+ idex(opt.t1 idx_t1_c2)*/ * from (select /*+ idex(opt.t4 idx_t4_c2))*/ * from hint.t1, opt.t4 where hint.t1.a = opt.t4.c2) as yeti, opt.t1 as ta where yeti.a = ta.c2; 
 | 
						|
 | 
						|
================================================================
 | 
						|
|ID|OPERATOR                   |NAME            |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |                |490      |1764|
 | 
						|
|1 | MERGE JOIN                |                |100      |269 |
 | 
						|
|2 |  TABLE SCAN               |t4(idx_t4_c2_c3)|100      |92  |
 | 
						|
|3 |  TABLE SCAN               |t1              |100      |90  |
 | 
						|
|4 | PX COORDINATOR MERGE SORT |                |500      |1122|
 | 
						|
|5 |  EXCHANGE OUT DISTR       |:EX10000        |500      |1074|
 | 
						|
|6 |   SORT                    |                |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR  |                |500      |342 |
 | 
						|
|8 |     TABLE SCAN            |ta(idx_t1_c2)   |500      |342 |
 | 
						|
================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3], [ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      equal_conds([t1.a = ta.c2]), other_conds(nil)
 | 
						|
  1 - output([t1.a], [t1.b], [t4.c1], [t4.c2], [t4.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.a = t4.c2]), other_conds(nil)
 | 
						|
  2 - output([t4.c2], [t4.c1], [t4.c3]), filter(nil), 
 | 
						|
      access([t4.c2], [t4.c1], [t4.c3]), partitions(p0)
 | 
						|
  3 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
  4 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC])
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC]), local merge sort
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t4"@"SEL$1" "hint.t1"@"SEL$1" )"opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.ta"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 40(end)  ************** 
 | 
						|
 | 
						|
***************   Case 41   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1)*/ * from opt.t1 as ta , opt.t2 as tb where ta.c1 = tb.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               |ta      |500      |342 |
 | 
						|
|7 |   SORT                        |        |300      |859 |
 | 
						|
|8 |    PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|9 |     TABLE SCAN                |tb      |300      |205 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.c1]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), Local Order
 | 
						|
  4 - (#keys=1, [ta.c1]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  7 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  8 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  9 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 41(end)  ************** 
 | 
						|
 | 
						|
***************   Case 42   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.t2.c2; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |290      |1651|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|290      |1541|
 | 
						|
|2 |  HASH JOIN                  |        |290      |1541|
 | 
						|
|3 |   PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|4 |    TABLE SCAN               |t1      |500      |342 |
 | 
						|
|5 |   EXCHANGE IN DISTR         |        |300      |290 |
 | 
						|
|6 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|300      |205 |
 | 
						|
|7 |     PX PARTITION ITERATOR   |        |300      |205 |
 | 
						|
|8 |      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.c2]), other_conds(nil)
 | 
						|
  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 - (#keys=1, [t2.c2]), output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  8 - 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_HASH(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 42(end)  ************** 
 | 
						|
 | 
						|
***************   Case 43   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 hint.t2)*/ * from opt.t1, hint.t2 where opt.t1.c1 = hint.t2.b; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |        |100      |1462|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001|100      |1443|
 | 
						|
|2 |  MERGE JOIN                  |        |100      |1443|
 | 
						|
|3 |   SORT                       |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN               |t1      |500      |342 |
 | 
						|
|6 |   SORT                       |        |100      |227 |
 | 
						|
|7 |    EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|9 |      TABLE SCAN              |t2      |100      |90  |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.b]), 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([t2.a], [t2.b]), filter(nil), sort_keys([t2.b, ASC])
 | 
						|
  7 - output([t2.b], [t2.a]), filter(nil)
 | 
						|
  8 - (#keys=1, [t2.b]), output([t2.b], [t2.a]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([t2.b], [t2.a]), filter(nil), 
 | 
						|
      access([t2.b], [t2.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t2"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t2"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 43(end)  ************** 
 | 
						|
 | 
						|
***************   Case 44   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1) use_merge(ta)*/ * from opt.t1 as ta , opt.t2 as tb where ta.c1 = tb.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               |ta      |500      |342 |
 | 
						|
|7 |   SORT                        |        |300      |859 |
 | 
						|
|8 |    PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|9 |     TABLE SCAN                |tb      |300      |205 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.c1]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), Local Order
 | 
						|
  4 - (#keys=1, [ta.c1]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  7 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  8 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  9 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 44(end)  ************** 
 | 
						|
 | 
						|
***************   Case 45   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.ta) use_merge(ta)*/ * from opt.t1 as ta , opt.t2 as tb where ta.c1 = tb.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               |ta      |500      |342 |
 | 
						|
|7 |   SORT                        |        |300      |859 |
 | 
						|
|8 |    PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|9 |     TABLE SCAN                |tb      |300      |205 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tb.c1]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]), Local Order
 | 
						|
  4 - (#keys=1, [ta.c1]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  6 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  7 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  8 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  9 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "opt.ta"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 45(end)  ************** 
 | 
						|
 | 
						|
***************   Case 46   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 opt.t2) use_merge(opt.t1), use_nl(opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.t2.c2; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |        |290      |2410|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001|290      |2300|
 | 
						|
|2 |  MERGE JOIN                  |        |290      |2300|
 | 
						|
|3 |   SORT                       |        |300      |944 |
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |300      |290 |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|300      |205 |
 | 
						|
|6 |      PX PARTITION ITERATOR   |        |300      |205 |
 | 
						|
|7 |       TABLE SCAN             |t2      |300      |205 |
 | 
						|
|8 |   SORT                       |        |500      |1074|
 | 
						|
|9 |    PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|10|     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.c2]), other_conds(nil)
 | 
						|
  3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c2, ASC])
 | 
						|
  4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  5 - (#keys=1, [t2.c2]), output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  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])
 | 
						|
 | 
						|
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" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 46(end)  ************** 
 | 
						|
 | 
						|
***************   Case 47   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 opt.t2) use_merge(opt.t1), use_bnl(opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.t2.c2; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |        |290      |2410|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001|290      |2300|
 | 
						|
|2 |  MERGE JOIN                  |        |290      |2300|
 | 
						|
|3 |   SORT                       |        |300      |944 |
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |300      |290 |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|300      |205 |
 | 
						|
|6 |      PX PARTITION ITERATOR   |        |300      |205 |
 | 
						|
|7 |       TABLE SCAN             |t2      |300      |205 |
 | 
						|
|8 |   SORT                       |        |500      |1074|
 | 
						|
|9 |    PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|10|     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.c2]), other_conds(nil)
 | 
						|
  3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c2, ASC])
 | 
						|
  4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  5 - (#keys=1, [t2.c2]), output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  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])
 | 
						|
 | 
						|
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" ) PARTITION NONE)
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 47(end)  ************** 
 | 
						|
 | 
						|
***************   Case 48   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 hint.t2) use_merge(test), use_nl(opt.t1)*/ * from opt.t1, hint.t2 where opt.t1.c1 = hint.t2.b; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |        |100      |1462|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001|100      |1443|
 | 
						|
|2 |  MERGE JOIN                  |        |100      |1443|
 | 
						|
|3 |   SORT                       |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN               |t1      |500      |342 |
 | 
						|
|6 |   SORT                       |        |100      |227 |
 | 
						|
|7 |    EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|9 |      TABLE SCAN              |t2      |100      |90  |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.b]), 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([t2.a], [t2.b]), filter(nil), sort_keys([t2.b, ASC])
 | 
						|
  7 - output([t2.b], [t2.a]), filter(nil)
 | 
						|
  8 - (#keys=1, [t2.b]), output([t2.b], [t2.a]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([t2.b], [t2.a]), filter(nil), 
 | 
						|
      access([t2.b], [t2.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t2"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t2"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 48(end)  ************** 
 | 
						|
 | 
						|
***************   Case 49   ***************
 | 
						|
 | 
						|
SQL: select /*+ full(opt.t1 hint.t2) use_merge(test), use_bnl(opt.t1)*/ * from opt.t1, hint.t2 where opt.t1.c1 = hint.t2.b; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |        |100      |1462|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001|100      |1443|
 | 
						|
|2 |  MERGE JOIN                  |        |100      |1443|
 | 
						|
|3 |   SORT                       |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN               |t1      |500      |342 |
 | 
						|
|6 |   SORT                       |        |100      |227 |
 | 
						|
|7 |    EXCHANGE IN DISTR         |        |100      |100 |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|9 |      TABLE SCAN              |t2      |100      |90  |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.a], [t2.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.b]), 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([t2.a], [t2.b]), filter(nil), sort_keys([t2.b, ASC])
 | 
						|
  7 - output([t2.b], [t2.a]), filter(nil)
 | 
						|
  8 - (#keys=1, [t2.b]), output([t2.b], [t2.a]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([t2.b], [t2.a]), filter(nil), 
 | 
						|
      access([t2.b], [t2.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "hint.t2"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.t2"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 49(end)  ************** 
 | 
						|
 | 
						|
***************   Case 50   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered use_merge(ta,tb,tc,td)*/ * from opt.t1 as ta, opt.t2 as tb , hint.t1 as tc, hint.t2 as td where ta.c1 = tc.a and ta.c2 = tb.c1 and tb.c1 = td.b; 
 | 
						|
 | 
						|
=====================================================================
 | 
						|
|ID|OPERATOR                           |NAME         |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                         |             |33       |3891|
 | 
						|
|1 | SORT                              |             |98       |3627|
 | 
						|
|2 |  MERGE JOIN                       |             |98       |3351|
 | 
						|
|3 |   PX COORDINATOR MERGE SORT       |             |490      |3121|
 | 
						|
|4 |    EXCHANGE OUT DISTR             |:EX10001     |490      |2936|
 | 
						|
|5 |     SORT                          |             |490      |2936|
 | 
						|
|6 |      MERGE JOIN                   |             |490      |1648|
 | 
						|
|7 |       EXCHANGE IN MERGE SORT DISTR|             |500      |389 |
 | 
						|
|8 |        EXCHANGE OUT DISTR (PKEY)  |:EX10000     |500      |342 |
 | 
						|
|9 |         PX PARTITION ITERATOR     |             |500      |342 |
 | 
						|
|10|          TABLE SCAN               |ta(idx_t1_c2)|500      |342 |
 | 
						|
|11|       SORT                        |             |300      |859 |
 | 
						|
|12|        PX PARTITION ITERATOR      |             |300      |205 |
 | 
						|
|13|         TABLE SCAN                |tb           |300      |205 |
 | 
						|
|14|   TABLE SCAN                      |tc           |100      |90  |
 | 
						|
|15| SORT                              |             |100      |217 |
 | 
						|
|16|  TABLE SCAN                       |td           |100      |90  |
 | 
						|
=====================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b], [td.a], [td.b]), filter(nil), 
 | 
						|
      equal_conds([tb.c1 = td.b]), other_conds(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b]), filter(nil), sort_keys([tb.c1, ASC])
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tc.a]), other_conds(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([ta.c1, ASC])
 | 
						|
  4 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  5 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([ta.c1, ASC])
 | 
						|
  6 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c2 = tb.c1]), other_conds(nil)
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC]), Local Order
 | 
						|
  8 - (#keys=1, [ta.c2]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  9 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  10 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  11 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  12 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  13 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
  14 - output([tc.a], [tc.b]), filter(nil), 
 | 
						|
      access([tc.a], [tc.b]), partitions(p0)
 | 
						|
  15 - output([td.a], [td.b]), filter(nil), sort_keys([td.b, ASC])
 | 
						|
  16 - output([td.b], [td.a]), filter(nil), 
 | 
						|
      access([td.b], [td.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" )"hint.tc"@"SEL$1" )"hint.td"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.td"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.tc"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tc"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.td"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 50(end)  ************** 
 | 
						|
 | 
						|
***************   Case 51   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered use_nl(ta tb tc td)*/ * from opt.t1 as ta, opt.t2 as tb , hint.t1 as tc, hint.t2 as td where ta.c1 = tc.a and ta.c2 = tb.c1 and tb.c1 = td.b; 
 | 
						|
 | 
						|
==================================================================
 | 
						|
|ID|OPERATOR                       |NAME         |EST. ROWS|COST |
 | 
						|
------------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN               |             |33       |39941|
 | 
						|
|1 | NESTED-LOOP JOIN              |             |98       |36932|
 | 
						|
|2 |  PX COORDINATOR               |             |490      |18942|
 | 
						|
|3 |   EXCHANGE OUT DISTR          |:EX10001     |490      |18757|
 | 
						|
|4 |    NESTED-LOOP JOIN           |             |490      |18757|
 | 
						|
|5 |     EXCHANGE IN DISTR         |             |500      |389  |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)|:EX10000     |500      |342  |
 | 
						|
|7 |       PX PARTITION ITERATOR   |             |500      |342  |
 | 
						|
|8 |        TABLE SCAN             |ta(idx_t1_c2)|500      |342  |
 | 
						|
|9 |     PX PARTITION ITERATOR     |             |1        |36   |
 | 
						|
|10|      TABLE GET                |tb           |1        |36   |
 | 
						|
|11|  TABLE GET                    |tc           |1        |36   |
 | 
						|
|12| MATERIAL                      |             |100      |127  |
 | 
						|
|13|  TABLE SCAN                   |td           |100      |90   |
 | 
						|
==================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b], [td.a], [td.b]), filter(nil), 
 | 
						|
      conds([tb.c1 = td.b]), nl_params_(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([ta.c1])
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  4 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([ta.c2])
 | 
						|
  5 - output([ta.c1], [ta.c2], [PARTITION_ID]), filter(nil)
 | 
						|
  6 - (#keys=1, [ta.c2]), output([ta.c1], [ta.c2], [PARTITION_ID]), filter(nil), dop=1
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  9 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  10 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
  11 - output([tc.a], [tc.b]), filter(nil), 
 | 
						|
      access([tc.a], [tc.b]), partitions(p0)
 | 
						|
  12 - output([td.a], [td.b]), filter(nil)
 | 
						|
  13 - output([td.b], [td.a]), filter(nil), 
 | 
						|
      access([td.b], [td.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" )"hint.tc"@"SEL$1" )"hint.td"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.td"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.td"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.tc"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("hint.tc"@"SEL$1" ) BC2HOST NONE)
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("hint.tc"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tc"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.td"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 51(end)  ************** 
 | 
						|
 | 
						|
***************   Case 52   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered use_bnl(ta tb tc td)*/ * from opt.t1 as ta, opt.t2 as tb , hint.t1 as tc, hint.t2 as td where ta.c1 = tc.a and ta.c2 = tb.c1 and tb.c1 = td.b; 
 | 
						|
 | 
						|
===================================================================
 | 
						|
|ID|OPERATOR                         |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |             |33       |2540|
 | 
						|
|1 | TABLE SCAN                      |td           |100      |90  |
 | 
						|
|2 | HASH JOIN                       |             |98       |2271|
 | 
						|
|3 |  TABLE SCAN                     |tc           |100      |90  |
 | 
						|
|4 |  PX COORDINATOR                 |             |490      |1834|
 | 
						|
|5 |   EXCHANGE OUT DISTR            |:EX10001     |490      |1648|
 | 
						|
|6 |    MERGE JOIN                   |             |490      |1648|
 | 
						|
|7 |     EXCHANGE IN MERGE SORT DISTR|             |500      |389 |
 | 
						|
|8 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000     |500      |342 |
 | 
						|
|9 |       PX PARTITION ITERATOR     |             |500      |342 |
 | 
						|
|10|        TABLE SCAN               |ta(idx_t1_c2)|500      |342 |
 | 
						|
|11|     SORT                        |             |300      |859 |
 | 
						|
|12|      PX PARTITION ITERATOR      |             |300      |205 |
 | 
						|
|13|       TABLE SCAN                |tb           |300      |205 |
 | 
						|
===================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b], [td.a], [td.b]), filter(nil), 
 | 
						|
      equal_conds([tb.c1 = td.b]), other_conds(nil)
 | 
						|
  1 - output([td.b], [td.a]), filter(nil), 
 | 
						|
      access([td.b], [td.a]), partitions(p0)
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tc.a]), other_conds(nil)
 | 
						|
  3 - output([tc.a], [tc.b]), filter(nil), 
 | 
						|
      access([tc.a], [tc.b]), partitions(p0)
 | 
						|
  4 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  5 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  6 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c2 = tb.c1]), other_conds(nil)
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC]), Local Order
 | 
						|
  8 - (#keys=1, [ta.c2]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  9 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  10 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  11 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  12 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  13 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.td"@"SEL$1" ("hint.tc"@"SEL$1" ("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.tc"@"SEL$1" "opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.td"@"SEL$1")
 | 
						|
      USE_HASH(@"SEL$1" ("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.tc"@"SEL$1")
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 52(end)  ************** 
 | 
						|
 | 
						|
***************   Case 53   ***************
 | 
						|
 | 
						|
SQL: select /*+ ordered*/ * from opt.t1 as ta, opt.t2 as tb , hint.t1 as tc, hint.t2 as td where ta.c1 = tc.a and ta.c2 = tb.c1 and tb.c1 = td.b; 
 | 
						|
 | 
						|
===================================================================
 | 
						|
|ID|OPERATOR                         |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |             |33       |3593|
 | 
						|
|1 | HASH JOIN                       |             |98       |3182|
 | 
						|
|2 |  PX COORDINATOR                 |             |490      |1834|
 | 
						|
|3 |   EXCHANGE OUT DISTR            |:EX10001     |490      |1648|
 | 
						|
|4 |    MERGE JOIN                   |             |490      |1648|
 | 
						|
|5 |     EXCHANGE IN MERGE SORT DISTR|             |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000     |500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR     |             |500      |342 |
 | 
						|
|8 |        TABLE SCAN               |ta(idx_t1_c2)|500      |342 |
 | 
						|
|9 |     SORT                        |             |300      |859 |
 | 
						|
|10|      PX PARTITION ITERATOR      |             |300      |205 |
 | 
						|
|11|       TABLE SCAN                |tb           |300      |205 |
 | 
						|
|12|  TABLE SCAN                     |tc           |100      |90  |
 | 
						|
|13| TABLE SCAN                      |td           |100      |90  |
 | 
						|
===================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b], [td.a], [td.b]), filter(nil), 
 | 
						|
      equal_conds([tb.c1 = td.b]), other_conds(nil)
 | 
						|
  1 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3], [tc.a], [tc.b]), filter(nil), 
 | 
						|
      equal_conds([ta.c1 = tc.a]), other_conds(nil)
 | 
						|
  2 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  3 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), dop=1
 | 
						|
  4 - output([ta.c1], [ta.c2], [tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      equal_conds([ta.c2 = tb.c1]), other_conds(nil)
 | 
						|
  5 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c2, ASC]), Local Order
 | 
						|
  6 - (#keys=1, [ta.c2]), output([ta.c1], [ta.c2]), filter(nil), dop=1
 | 
						|
  7 - output([ta.c1], [ta.c2]), filter(nil)
 | 
						|
  8 - output([ta.c1], [ta.c2]), filter(nil), 
 | 
						|
      access([ta.c1], [ta.c2]), partitions(p[0-4])
 | 
						|
  9 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), sort_keys([tb.c1, ASC]), local merge sort
 | 
						|
  10 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil)
 | 
						|
  11 - output([tb.c1], [tb.c2], [tb.c3]), filter(nil), 
 | 
						|
      access([tb.c1], [tb.c2], [tb.c3]), partitions(p[0-2])
 | 
						|
  12 - output([tc.a], [tc.b]), filter(nil), 
 | 
						|
      access([tc.a], [tc.b]), partitions(p0)
 | 
						|
  13 - output([td.b], [td.a]), filter(nil), 
 | 
						|
      access([td.b], [td.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.ta"@"SEL$1" "opt.tb"@"SEL$1" )"hint.tc"@"SEL$1" )"hint.td"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.td"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.tc"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.tb"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.tb"@"SEL$1" ) PARTITION NONE)
 | 
						|
      INDEX(@"SEL$1" "opt.ta"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.tb"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.tc"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.td"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 53(end)  ************** 
 | 
						|
 | 
						|
***************   Case 54   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(test, opt.t1 opt.t2) */ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 54(end)  ************** 
 | 
						|
 | 
						|
***************   Case 55   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t1 opt.t2) use_merge(opt.t1), use_nl(opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 55(end)  ************** 
 | 
						|
 | 
						|
***************   Case 56   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t1 opt.t2) use_merge(opt.t1), use_bnl(opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 56(end)  ************** 
 | 
						|
 | 
						|
***************   Case 57   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2) */ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 57(end)  ************** 
 | 
						|
 | 
						|
***************   Case 58   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2 ha hb) */ * from opt.t1, opt.t2, hint.t1 as ha, hint.t2 as hb where opt.t1.c1 = opt.t2.c1 and opt.t1.c1 = ha.a and opt.t2.c2 = hb.b; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                         |NAME    |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |        |58       |2152|
 | 
						|
|1 | MERGE JOIN                      |        |60       |1830|
 | 
						|
|2 |  PX COORDINATOR MERGE SORT      |        |300      |1649|
 | 
						|
|3 |   EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | 
						|
|4 |    MERGE JOIN                   |        |300      |1536|
 | 
						|
|5 |     EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|8 |        TABLE SCAN               |t1      |500      |342 |
 | 
						|
|9 |     SORT                        |        |300      |859 |
 | 
						|
|10|      PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|11|       TABLE SCAN                |t2      |300      |205 |
 | 
						|
|12|  TABLE SCAN                     |ha      |100      |90  |
 | 
						|
|13| TABLE SCAN                      |hb      |100      |90  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b], [hb.a], [hb.b]), filter(nil), 
 | 
						|
      equal_conds([t2.c2 = hb.b]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = ha.a]), other_conds(nil)
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order
 | 
						|
  6 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  12 - output([ha.a], [ha.b]), filter(nil), 
 | 
						|
      access([ha.a], [ha.b]), partitions(p0)
 | 
						|
  13 - output([hb.b], [hb.a]), filter(nil), 
 | 
						|
      access([hb.b], [hb.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )"hint.ha"@"SEL$1" )"hint.hb"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.hb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.ha"@"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")
 | 
						|
      FULL(@"SEL$1" "hint.ha"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.hb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 58(end)  ************** 
 | 
						|
 | 
						|
***************   Case 59   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2 ha hb) use_merge(opt.t1 ha) use_nl(opt.t1 hb)*/ * from opt.t1, opt.t2, hint.t1 as ha, hint.t2 as hb where opt.t1.c1 = opt.t2.c1 and opt.t1.c1 = ha.a and opt.t2.c2 = hb.b; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                         |NAME    |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN                 |        |58       |3740|
 | 
						|
|1 | MERGE JOIN                      |        |60       |1830|
 | 
						|
|2 |  PX COORDINATOR MERGE SORT      |        |300      |1649|
 | 
						|
|3 |   EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | 
						|
|4 |    MERGE JOIN                   |        |300      |1536|
 | 
						|
|5 |     EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|8 |        TABLE SCAN               |t1      |500      |342 |
 | 
						|
|9 |     SORT                        |        |300      |859 |
 | 
						|
|10|      PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|11|       TABLE SCAN                |t2      |300      |205 |
 | 
						|
|12|  TABLE SCAN                     |ha      |100      |90  |
 | 
						|
|13| MATERIAL                        |        |100      |127 |
 | 
						|
|14|  TABLE SCAN                     |hb      |100      |90  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b], [hb.a], [hb.b]), filter(nil), 
 | 
						|
      conds([t2.c2 = hb.b]), nl_params_(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = ha.a]), other_conds(nil)
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order
 | 
						|
  6 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  12 - output([ha.a], [ha.b]), filter(nil), 
 | 
						|
      access([ha.a], [ha.b]), partitions(p0)
 | 
						|
  13 - output([hb.a], [hb.b]), filter(nil)
 | 
						|
  14 - output([hb.b], [hb.a]), filter(nil), 
 | 
						|
      access([hb.b], [hb.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )"hint.ha"@"SEL$1" )"hint.hb"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.hb"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("hint.hb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.ha"@"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")
 | 
						|
      FULL(@"SEL$1" "hint.ha"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.hb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 59(end)  ************** 
 | 
						|
 | 
						|
***************   Case 60   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2 ha hb) use_merge(opt.t1 ha) use_bnl(opt.t1 hb)*/ * from opt.t1, opt.t2, hint.t1 as ha, hint.t2 as hb where opt.t1.c1 = opt.t2.c1 and opt.t1.c1 = ha.a and opt.t2.c2 = hb.b; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                         |NAME    |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |        |58       |2102|
 | 
						|
|1 | TABLE SCAN                      |hb      |100      |90  |
 | 
						|
|2 | MERGE JOIN                      |        |60       |1830|
 | 
						|
|3 |  PX COORDINATOR MERGE SORT      |        |300      |1649|
 | 
						|
|4 |   EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | 
						|
|5 |    MERGE JOIN                   |        |300      |1536|
 | 
						|
|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 |
 | 
						|
|10|     SORT                        |        |300      |859 |
 | 
						|
|11|      PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|12|       TABLE SCAN                |t2      |300      |205 |
 | 
						|
|13|  TABLE SCAN                     |ha      |100      |90  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b], [hb.a], [hb.b]), filter(nil), 
 | 
						|
      equal_conds([t2.c2 = hb.b]), other_conds(nil)
 | 
						|
  1 - output([hb.b], [hb.a]), filter(nil), 
 | 
						|
      access([hb.b], [hb.a]), partitions(p0)
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = ha.a]), other_conds(nil)
 | 
						|
  3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  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])
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  13 - output([ha.a], [ha.b]), filter(nil), 
 | 
						|
      access([ha.a], [ha.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.hb"@"SEL$1" (("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )"hint.ha"@"SEL$1" )))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" "hint.ha"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.hb"@"SEL$1")
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.ha"@"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")
 | 
						|
      FULL(@"SEL$1" "hint.ha"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 60(end)  ************** 
 | 
						|
 | 
						|
***************   Case 61   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(test, opt.t1 opt.t2) use_merge(test opt.t1 opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 61(end)  ************** 
 | 
						|
 | 
						|
***************   Case 62   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(test, opt.t1 opt.t2) use_merge(test opt.t1) use_nl(test opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 62(end)  ************** 
 | 
						|
 | 
						|
***************   Case 63   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(test, opt.t1 opt.t2) use_merge(test opt.t1) use_bnl(test opt.t2)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 63(end)  ************** 
 | 
						|
 | 
						|
***************   Case 64   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t1 opt.t2) use_nl(opt.t1 opt.t3 opt.t5)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 64(end)  ************** 
 | 
						|
 | 
						|
***************   Case 65   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t1 opt.t2) use_bnl(opt.t1 opt.t3 opt.t5)*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 65(end)  ************** 
 | 
						|
 | 
						|
***************   Case 66   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2) use_nl()*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 66(end)  ************** 
 | 
						|
 | 
						|
***************   Case 67   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2) use_bnl()*/ * from opt.t1, opt.t2 where opt.t1.c1 = opt.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 67(end)  ************** 
 | 
						|
 | 
						|
***************   Case 68   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2 ha hb) use_nl(ta hint.t1 hint.t2 tb)*/ * from opt.t1, opt.t2, hint.t1 as ha, hint.t2 as hb where opt.t1.c1 = opt.t2.c1 and opt.t1.c1 = ha.a and opt.t2.c2 = hb.b; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                         |NAME    |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |        |58       |2152|
 | 
						|
|1 | MERGE JOIN                      |        |60       |1830|
 | 
						|
|2 |  PX COORDINATOR MERGE SORT      |        |300      |1649|
 | 
						|
|3 |   EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | 
						|
|4 |    MERGE JOIN                   |        |300      |1536|
 | 
						|
|5 |     EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|8 |        TABLE SCAN               |t1      |500      |342 |
 | 
						|
|9 |     SORT                        |        |300      |859 |
 | 
						|
|10|      PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|11|       TABLE SCAN                |t2      |300      |205 |
 | 
						|
|12|  TABLE SCAN                     |ha      |100      |90  |
 | 
						|
|13| TABLE SCAN                      |hb      |100      |90  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b], [hb.a], [hb.b]), filter(nil), 
 | 
						|
      equal_conds([t2.c2 = hb.b]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = ha.a]), other_conds(nil)
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order
 | 
						|
  6 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  12 - output([ha.a], [ha.b]), filter(nil), 
 | 
						|
      access([ha.a], [ha.b]), partitions(p0)
 | 
						|
  13 - output([hb.b], [hb.a]), filter(nil), 
 | 
						|
      access([hb.b], [hb.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )"hint.ha"@"SEL$1" )"hint.hb"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.hb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.ha"@"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")
 | 
						|
      FULL(@"SEL$1" "hint.ha"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.hb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 68(end)  ************** 
 | 
						|
 | 
						|
***************   Case 69   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(opt.t1 opt.t2 ha hb) use_bnl(ta hint.t1 hint.t2 tb)*/ * from opt.t1, opt.t2, hint.t1 as ha, hint.t2 as hb where opt.t1.c1 = opt.t2.c1 and opt.t1.c1 = ha.a and opt.t2.c2 = hb.b; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                         |NAME    |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                        |        |58       |2152|
 | 
						|
|1 | MERGE JOIN                      |        |60       |1830|
 | 
						|
|2 |  PX COORDINATOR MERGE SORT      |        |300      |1649|
 | 
						|
|3 |   EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | 
						|
|4 |    MERGE JOIN                   |        |300      |1536|
 | 
						|
|5 |     EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR     |        |500      |342 |
 | 
						|
|8 |        TABLE SCAN               |t1      |500      |342 |
 | 
						|
|9 |     SORT                        |        |300      |859 |
 | 
						|
|10|      PX PARTITION ITERATOR      |        |300      |205 |
 | 
						|
|11|       TABLE SCAN                |t2      |300      |205 |
 | 
						|
|12|  TABLE SCAN                     |ha      |100      |90  |
 | 
						|
|13| TABLE SCAN                      |hb      |100      |90  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b], [hb.a], [hb.b]), filter(nil), 
 | 
						|
      equal_conds([t2.c2 = hb.b]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [ha.a], [ha.b]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = ha.a]), other_conds(nil)
 | 
						|
  2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order
 | 
						|
  6 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), 
 | 
						|
      access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2])
 | 
						|
  12 - output([ha.a], [ha.b]), filter(nil), 
 | 
						|
      access([ha.a], [ha.b]), partitions(p0)
 | 
						|
  13 - output([hb.b], [hb.a]), filter(nil), 
 | 
						|
      access([hb.b], [hb.a]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )"hint.ha"@"SEL$1" )"hint.hb"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("hint.hb"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("hint.ha"@"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")
 | 
						|
      FULL(@"SEL$1" "hint.ha"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "hint.hb"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 69(end)  ************** 
 | 
						|
 | 
						|
***************   Case 70   ***************
 | 
						|
 | 
						|
SQL: select t1.c1, v.c1 from t1, (select t2.c1 from t2, t4) v; 
 | 
						|
 | 
						|
=================================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST    |
 | 
						|
-----------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |             |15000000 |10636543|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|             |30000    |21507   |
 | 
						|
|2 |  PX COORDINATOR           |             |300      |206     |
 | 
						|
|3 |   EXCHANGE OUT DISTR      |:EX10000     |300      |192     |
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |300      |192     |
 | 
						|
|5 |     TABLE SCAN            |t2           |300      |192     |
 | 
						|
|6 |  MATERIAL                 |             |100      |73      |
 | 
						|
|7 |   TABLE SCAN              |t4(idx_t4_c2)|100      |54      |
 | 
						|
|8 | MATERIAL                  |             |500      |446     |
 | 
						|
|9 |  PX COORDINATOR           |             |500      |354     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000     |500      |331     |
 | 
						|
|11|    PX PARTITION ITERATOR  |             |500      |331     |
 | 
						|
|12|     TABLE SCAN            |t1           |500      |331     |
 | 
						|
=================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t2.c1]), filter(nil)
 | 
						|
  3 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  4 - output([t2.c1]), filter(nil)
 | 
						|
  5 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  6 - output([1]), filter(nil)
 | 
						|
  7 - output([1]), filter(nil), 
 | 
						|
      access([t4.c2]), partitions(p0)
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t4"@"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.t4"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 70(end)  ************** 
 | 
						|
 | 
						|
***************   Case 71   ***************
 | 
						|
 | 
						|
SQL: select t1.c1, v.c1 from t1, (select/*+index(t4 primary)*/ t2.c1 from t2, t4) v; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                   |NAME    |EST. ROWS|COST    |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |        |15000000 |10636579|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|        |30000    |21543   |
 | 
						|
|2 |  PX COORDINATOR           |        |300      |206     |
 | 
						|
|3 |   EXCHANGE OUT DISTR      |:EX10000|300      |192     |
 | 
						|
|4 |    PX PARTITION ITERATOR  |        |300      |192     |
 | 
						|
|5 |     TABLE SCAN            |t2      |300      |192     |
 | 
						|
|6 |  MATERIAL                 |        |100      |109     |
 | 
						|
|7 |   TABLE SCAN              |t4      |100      |90      |
 | 
						|
|8 | MATERIAL                  |        |500      |446     |
 | 
						|
|9 |  PX COORDINATOR           |        |500      |354     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000|500      |331     |
 | 
						|
|11|    PX PARTITION ITERATOR  |        |500      |331     |
 | 
						|
|12|     TABLE SCAN            |t1      |500      |331     |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t2.c1]), filter(nil)
 | 
						|
  3 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  4 - output([t2.c1]), filter(nil)
 | 
						|
  5 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  6 - output([1]), filter(nil)
 | 
						|
  7 - output([1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t4"@"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.t4"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 71(end)  ************** 
 | 
						|
 | 
						|
***************   Case 72   ***************
 | 
						|
 | 
						|
SQL: select/*+no_rewrite*/ t1.c1, v.c1 from t1, (select/*+index(t4 primary)*/ t2.c1 from t2, t4) v; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                    |NAME    |EST. ROWS|COST    |
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN  |        |15000000 |10640719|
 | 
						|
|1 | SUBPLAN SCAN               |v       |30000    |25684   |
 | 
						|
|2 |  NESTED-LOOP JOIN CARTESIAN|        |30000    |21543   |
 | 
						|
|3 |   PX COORDINATOR           |        |300      |206     |
 | 
						|
|4 |    EXCHANGE OUT DISTR      |:EX10000|300      |192     |
 | 
						|
|5 |     PX PARTITION ITERATOR  |        |300      |192     |
 | 
						|
|6 |      TABLE SCAN            |t2      |300      |192     |
 | 
						|
|7 |   MATERIAL                 |        |100      |109     |
 | 
						|
|8 |    TABLE SCAN              |t4      |100      |90      |
 | 
						|
|9 | MATERIAL                   |        |500      |446     |
 | 
						|
|10|  PX COORDINATOR            |        |500      |354     |
 | 
						|
|11|   EXCHANGE OUT DISTR       |:EX20000|500      |331     |
 | 
						|
|12|    PX PARTITION ITERATOR   |        |500      |331     |
 | 
						|
|13|     TABLE SCAN             |t1      |500      |331     |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [v.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([v.c1]), filter(nil), 
 | 
						|
      access([v.c1])
 | 
						|
  2 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  3 - output([t2.c1]), filter(nil)
 | 
						|
  4 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t2.c1]), filter(nil)
 | 
						|
  6 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  7 - output([1]), filter(nil)
 | 
						|
  8 - output([1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  9 - output([t1.c1]), filter(nil)
 | 
						|
  10 - output([t1.c1]), filter(nil)
 | 
						|
  11 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  12 - output([t1.c1]), filter(nil)
 | 
						|
  13 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("v"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      LEADING(@"SEL$2" ("opt.t2"@"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.t2"@"SEL$2")
 | 
						|
      FULL(@"SEL$2" "opt.t4"@"SEL$2")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      NO_REWRITE
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 72(end)  ************** 
 | 
						|
 | 
						|
***************   Case 73   ***************
 | 
						|
 | 
						|
SQL: select t1.c1, v.c1 from t1, (select/*+leading(t2)*/ t2.c1 from t2, t4) v; 
 | 
						|
 | 
						|
=================================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST    |
 | 
						|
-----------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |             |15000000 |10636543|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|             |30000    |21507   |
 | 
						|
|2 |  PX COORDINATOR           |             |300      |206     |
 | 
						|
|3 |   EXCHANGE OUT DISTR      |:EX10000     |300      |192     |
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |300      |192     |
 | 
						|
|5 |     TABLE SCAN            |t2           |300      |192     |
 | 
						|
|6 |  MATERIAL                 |             |100      |73      |
 | 
						|
|7 |   TABLE SCAN              |t4(idx_t4_c2)|100      |54      |
 | 
						|
|8 | MATERIAL                  |             |500      |446     |
 | 
						|
|9 |  PX COORDINATOR           |             |500      |354     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000     |500      |331     |
 | 
						|
|11|    PX PARTITION ITERATOR  |             |500      |331     |
 | 
						|
|12|     TABLE SCAN            |t1           |500      |331     |
 | 
						|
=================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t2.c1]), filter(nil)
 | 
						|
  3 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  4 - output([t2.c1]), filter(nil)
 | 
						|
  5 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  6 - output([1]), filter(nil)
 | 
						|
  7 - output([1]), filter(nil), 
 | 
						|
      access([t4.c2]), partitions(p0)
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t4"@"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.t4"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 73(end)  ************** 
 | 
						|
 | 
						|
***************   Case 74   ***************
 | 
						|
 | 
						|
SQL: select t1.c1, v.c1 from t1, (select/*+read_consistency(weak)*/ t2.c1 from t2, t4) v; 
 | 
						|
 | 
						|
=================================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST    |
 | 
						|
-----------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN |             |15000000 |10636543|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|             |30000    |21507   |
 | 
						|
|2 |  PX COORDINATOR           |             |300      |206     |
 | 
						|
|3 |   EXCHANGE OUT DISTR      |:EX10000     |300      |192     |
 | 
						|
|4 |    PX PARTITION ITERATOR  |             |300      |192     |
 | 
						|
|5 |     TABLE SCAN            |t2           |300      |192     |
 | 
						|
|6 |  MATERIAL                 |             |100      |73      |
 | 
						|
|7 |   TABLE SCAN              |t4(idx_t4_c2)|100      |54      |
 | 
						|
|8 | MATERIAL                  |             |500      |446     |
 | 
						|
|9 |  PX COORDINATOR           |             |500      |354     |
 | 
						|
|10|   EXCHANGE OUT DISTR      |:EX20000     |500      |331     |
 | 
						|
|11|    PX PARTITION ITERATOR  |             |500      |331     |
 | 
						|
|12|     TABLE SCAN            |t1           |500      |331     |
 | 
						|
=================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([t2.c1]), filter(nil)
 | 
						|
  3 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  4 - output([t2.c1]), filter(nil)
 | 
						|
  5 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2]), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
  6 - output([1]), filter(nil)
 | 
						|
  7 - output([1]), filter(nil), 
 | 
						|
      access([t4.c2]), partitions(p0), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
  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]), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t4"@"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.t4"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      READ_CONSISTENCY("WEAK")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 74(end)  ************** 
 | 
						|
 | 
						|
***************   Case 75   ***************
 | 
						|
 | 
						|
SQL: select t1.c1, v.c1 from t1, (select/*+use_nl(t2, t4)*/ t2.c1 from t2, t4 where t2.c1 = t4.c1) v; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST |
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN CARTESIAN    |        |50000    |39601|
 | 
						|
|1 | PX COORDINATOR               |        |100      |3774 |
 | 
						|
|2 |  EXCHANGE OUT DISTR          |:EX10001|100      |3764 |
 | 
						|
|3 |   NESTED-LOOP JOIN           |        |100      |3764 |
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |100      |95   |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90   |
 | 
						|
|6 |      TABLE SCAN              |t4      |100      |90   |
 | 
						|
|7 |    PX PARTITION ITERATOR     |        |1        |36   |
 | 
						|
|8 |     TABLE GET                |t2      |1        |36   |
 | 
						|
|9 | MATERIAL                     |        |500      |446  |
 | 
						|
|10|  PX COORDINATOR              |        |500      |354  |
 | 
						|
|11|   EXCHANGE OUT DISTR         |:EX20000|500      |331  |
 | 
						|
|12|    PX PARTITION ITERATOR     |        |500      |331  |
 | 
						|
|13|     TABLE SCAN               |t1      |500      |331  |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  1 - output([t2.c1]), filter(nil)
 | 
						|
  2 - output([t2.c1]), filter(nil), dop=1
 | 
						|
  3 - output([t2.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([t4.c1])
 | 
						|
  4 - output([t4.c1], [PARTITION_ID]), filter(nil)
 | 
						|
  5 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID]), filter(nil), is_single, dop=1
 | 
						|
  6 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  7 - output([t2.c1]), filter(nil)
 | 
						|
  8 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  9 - output([t1.c1]), filter(nil)
 | 
						|
  10 - output([t1.c1]), filter(nil)
 | 
						|
  11 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  12 - output([t1.c1]), filter(nil)
 | 
						|
  13 - 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.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" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE)
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 75(end)  ************** 
 | 
						|
 | 
						|
***************   Case 76   ***************
 | 
						|
 | 
						|
SQL: (select /*+read_consistency(weak)*/ c1 from t1) union (select c1 from t2); 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                       |NAME    |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                 |        |800      |1472|
 | 
						|
|1 | EXCHANGE OUT DISTR            |:EX10001|800      |1435|
 | 
						|
|2 |  MERGE UNION DISTINCT         |        |800      |1435|
 | 
						|
|3 |   SORT                        |        |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR      |        |500      |331 |
 | 
						|
|5 |     TABLE SCAN                |t1      |500      |331 |
 | 
						|
|6 |   EXCHANGE IN MERGE SORT DISTR|        |300      |206 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)  |:EX10000|300      |192 |
 | 
						|
|8 |     PX PARTITION ITERATOR     |        |300      |192 |
 | 
						|
|9 |      TABLE SCAN               |t2      |300      |192 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([UNION([1])]), filter(nil), dop=1
 | 
						|
  2 - output([UNION([1])]), filter(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4]), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
  6 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
 | 
						|
  7 - (#keys=1, [t2.c1]), output([t2.c1]), filter(nil), dop=1
 | 
						|
  8 - output([t2.c1]), filter(nil)
 | 
						|
  9 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2]), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | 
						|
      READ_CONSISTENCY("WEAK")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 76(end)  ************** 
 | 
						|
 | 
						|
***************   Case 77   ***************
 | 
						|
 | 
						|
SQL: (select /*+read_consistency(weak)*/ c1 from t1) union (select /*+read_consistency(strong)*/ c1 from t2); 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                       |NAME    |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                 |        |800      |1472|
 | 
						|
|1 | EXCHANGE OUT DISTR            |:EX10001|800      |1435|
 | 
						|
|2 |  MERGE UNION DISTINCT         |        |800      |1435|
 | 
						|
|3 |   SORT                        |        |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR      |        |500      |331 |
 | 
						|
|5 |     TABLE SCAN                |t1      |500      |331 |
 | 
						|
|6 |   EXCHANGE IN MERGE SORT DISTR|        |300      |206 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)  |:EX10000|300      |192 |
 | 
						|
|8 |     PX PARTITION ITERATOR     |        |300      |192 |
 | 
						|
|9 |      TABLE SCAN               |t2      |300      |192 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([UNION([1])]), filter(nil), dop=1
 | 
						|
  2 - output([UNION([1])]), filter(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
 | 
						|
  7 - (#keys=1, [t2.c1]), output([t2.c1]), filter(nil), dop=1
 | 
						|
  8 - output([t2.c1]), filter(nil)
 | 
						|
  9 - 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 77(end)  ************** 
 | 
						|
 | 
						|
***************   Case 78   ***************
 | 
						|
 | 
						|
SQL: select * from opt.t1 ignore index (primary); 
 | 
						|
 | 
						|
=========================================================
 | 
						|
|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(idx_t1_c2)|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
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 78(end)  ************** 
 | 
						|
 | 
						|
***************   Case 79   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(@a0123456789012345678 t4@a0123456789012345678 idx_t4_c3)*/ * from t1 where c1 in (select/*+qb_name(a0123456789012345678)*/ 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 79(end)  ************** 
 | 
						|
 | 
						|
***************   Case 80   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(@a01234567890123456789 t4@a01234567890123456789 idx_t4_c3)*/ * from t1 where c1 in (select/*+qb_name(a01234567890123456789)*/ 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 80(end)  ************** 
 | 
						|
 | 
						|
***************   Case 81   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(@SEL$1 t4  idx_t4_c3)*/ * from t1 where c1 in (select/*+qb_name(yz)*/ c1 from t4); 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1361|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1347|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1347|
 | 
						|
|3 |   SORT                      |        |500      |1074|
 | 
						|
|4 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|5 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
|6 |   EXCHANGE IN DISTR         |        |100      |131 |
 | 
						|
|7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |126 |
 | 
						|
|8 |     SUBPLAN SCAN            |VIEW2   |100      |126 |
 | 
						|
|9 |      MERGE DISTINCT         |        |100      |112 |
 | 
						|
|10|       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 = VIEW2.VIEW1.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([VIEW2.VIEW1.c1]), filter(nil)
 | 
						|
  7 - (#keys=1, [VIEW2.VIEW1.c1]), output([VIEW2.VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([VIEW2.VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW2.VIEW1.c1])
 | 
						|
  9 - output([t4.c1]), filter(nil), 
 | 
						|
      distinct([t4.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$4" ("opt.t1"@"SEL$4" "VIEW2"@"SEL$4" ))
 | 
						|
      USE_MERGE(@"SEL$4" ("VIEW2"@"SEL$4" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$4" ("VIEW2"@"SEL$4" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$4" "opt.t1"@"SEL$4")
 | 
						|
      FULL(@"SEL$3" "opt.t4"@"SEL$3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 81(end)  ************** 
 | 
						|
 | 
						|
***************   Case 82   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4  t1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1311|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t4      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  3 - output([t4.c1]), filter(nil)
 | 
						|
  4 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.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 82(end)  ************** 
 | 
						|
 | 
						|
***************   Case 83   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t1  t4)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE 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], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.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 83(end)  ************** 
 | 
						|
 | 
						|
***************   Case 84   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t1@SEL$1  t4@YZ)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE 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], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.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 84(end)  ************** 
 | 
						|
 | 
						|
***************   Case 85   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1311|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t4      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  3 - output([t4.c1]), filter(nil)
 | 
						|
  4 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.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 85(end)  ************** 
 | 
						|
 | 
						|
***************   Case 86   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t_a@YZ  t1@SEL$1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4 t_a) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1311|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t_a     |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil), 
 | 
						|
      equal_conds([t_a.c1 = t1.c1]), other_conds(nil)
 | 
						|
  3 - output([t_a.c1]), filter(nil)
 | 
						|
  4 - (#keys=1, [t_a.c1]), output([t_a.c1]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t_a.c1]), filter(nil), 
 | 
						|
      access([t_a.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.t_a"@"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.t_a"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 86(end)  ************** 
 | 
						|
 | 
						|
***************   Case 87   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4 t_a) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE 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              |t_a     |100      |90  |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t_a.c1]), filter(nil), 
 | 
						|
      equal_conds([t_a.c1 = t1.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([t_a.c1]), filter(nil)
 | 
						|
  7 - (#keys=1, [t_a.c1]), output([t_a.c1]), filter(nil), is_single, dop=1
 | 
						|
  8 - output([t_a.c1]), filter(nil), 
 | 
						|
      access([t_a.c1]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t_a"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t_a"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t_a"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t_a"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 87(end)  ************** 
 | 
						|
 | 
						|
***************   Case 88   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1) use_nl(@SEL$1 t1@SEL$1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |3780|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |3766|
 | 
						|
|2 |  NESTED-LOOP JOIN           |        |100      |3766|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t4      |100      |90  |
 | 
						|
|6 |   PX PARTITION ITERATOR     |        |1        |36  |
 | 
						|
|7 |    TABLE GET                |t1      |1        |36  |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([t4.c1])
 | 
						|
  3 - output([t4.c1], [PARTITION_ID]), filter(nil)
 | 
						|
  4 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  7 - 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.t4"@"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" ))
 | 
						|
      FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 88(end)  ************** 
 | 
						|
 | 
						|
***************   Case 89   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1) use_bnl(@SEL$1 t1@SEL$1)*/ * from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1311|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t4      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  3 - output([t4.c1]), filter(nil)
 | 
						|
  4 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.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 89(end)  ************** 
 | 
						|
 | 
						|
***************   Case 90   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1) */ * from t1 , (select/*+qb_name(yz) use_merge(@SEL$1 t1@SEL$1)*/ c1 from t4) t where t.c1 = t1.c1; 
 | 
						|
 | 
						|
==========================================================
 | 
						|
|ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |        |100      |1325|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | 
						|
|2 |  MERGE JOIN                 |        |100      |1311|
 | 
						|
|3 |   EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|5 |     TABLE SCAN              |t4      |100      |90  |
 | 
						|
|6 |   SORT                      |        |500      |1074|
 | 
						|
|7 |    PX PARTITION ITERATOR    |        |500      |342 |
 | 
						|
|8 |     TABLE SCAN              |t1      |500      |342 |
 | 
						|
==========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1], [t1.c2], [t4.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  3 - output([t4.c1]), filter(nil)
 | 
						|
  4 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  5 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - 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.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 90(end)  ************** 
 | 
						|
 | 
						|
***************   Case 91   ***************
 | 
						|
 | 
						|
SQL: select c1 from t1 union select /*+index(@SEL$1 t1 idx_t1_c2)*/ c1 from t2; 
 | 
						|
 | 
						|
===============================================================
 | 
						|
|ID|OPERATOR                     |NAME         |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR               |             |800      |1409|
 | 
						|
|1 | EXCHANGE OUT DISTR          |:EX10001     |800      |1371|
 | 
						|
|2 |  HASH UNION DISTINCT        |             |800      |1371|
 | 
						|
|3 |   PX PARTITION ITERATOR     |             |500      |331 |
 | 
						|
|4 |    TABLE SCAN               |t1(idx_t1_c2)|500      |331 |
 | 
						|
|5 |   EXCHANGE IN DISTR         |             |300      |206 |
 | 
						|
|6 |    EXCHANGE OUT DISTR (PKEY)|:EX10000     |300      |192 |
 | 
						|
|7 |     PX PARTITION ITERATOR   |             |300      |192 |
 | 
						|
|8 |      TABLE SCAN             |t2           |300      |192 |
 | 
						|
===============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([UNION([1])]), filter(nil), dop=1
 | 
						|
  2 - output([UNION([1])]), filter(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil)
 | 
						|
  4 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  5 - output([t2.c1]), filter(nil)
 | 
						|
  6 - (#keys=1, [t2.c1]), 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
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 91(end)  ************** 
 | 
						|
 | 
						|
***************   Case 92   ***************
 | 
						|
 | 
						|
SQL: select t1.c1 from t1, t2 where t1.c1 = t2.c1 union select/*+leading(@SEL$1 t1 t2) use_merge(@SEL1 t2@SEL$1)*/ c1 from t2; 
 | 
						|
 | 
						|
===============================================================
 | 
						|
|ID|OPERATOR                          |NAME    |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                    |        |600      |2296|
 | 
						|
|1 | EXCHANGE OUT DISTR               |:EX10002|600      |2239|
 | 
						|
|2 |  MERGE UNION DISTINCT            |        |600      |2239|
 | 
						|
|3 |   EXCHANGE IN MERGE SORT DISTR   |        |300      |1488|
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)     |:EX10001|300      |1460|
 | 
						|
|5 |     MERGE JOIN                   |        |300      |1460|
 | 
						|
|6 |      SORT                        |        |500      |966 |
 | 
						|
|7 |       PX PARTITION ITERATOR      |        |500      |331 |
 | 
						|
|8 |        TABLE SCAN                |t1      |500      |331 |
 | 
						|
|9 |      EXCHANGE IN MERGE SORT DISTR|        |300      |206 |
 | 
						|
|10|       EXCHANGE OUT DISTR (PKEY)  |:EX10000|300      |192 |
 | 
						|
|11|        PX PARTITION ITERATOR     |        |300      |192 |
 | 
						|
|12|         TABLE SCAN               |t2      |300      |192 |
 | 
						|
|13|   SORT                           |        |300      |554 |
 | 
						|
|14|    PX PARTITION ITERATOR         |        |300      |192 |
 | 
						|
|15|     TABLE SCAN                   |t2      |300      |192 |
 | 
						|
===============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([UNION([1])]), filter(nil), dop=1
 | 
						|
  2 - output([UNION([1])]), filter(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  4 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  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])
 | 
						|
  9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
 | 
						|
  10 - (#keys=1, [t2.c1]), output([t2.c1]), filter(nil), dop=1
 | 
						|
  11 - output([t2.c1]), filter(nil)
 | 
						|
  12 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  13 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  14 - output([t2.c1]), filter(nil)
 | 
						|
  15 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), 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" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 92(end)  ************** 
 | 
						|
 | 
						|
***************   Case 93   ***************
 | 
						|
 | 
						|
SQL: select/*+leading(@SEL$1 t2 t1)*/ t1.c1 from t1, t2 where t1.c1 = t2.c1 union select/*+leading(@SEL$1 t1 t2) use_merge(@SEL1 t2@SEL$1)*/ c1 from t2; 
 | 
						|
 | 
						|
===============================================================
 | 
						|
|ID|OPERATOR                          |NAME    |EST. ROWS|COST|
 | 
						|
---------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                    |        |600      |2296|
 | 
						|
|1 | EXCHANGE OUT DISTR               |:EX10002|600      |2239|
 | 
						|
|2 |  MERGE UNION DISTINCT            |        |600      |2239|
 | 
						|
|3 |   EXCHANGE IN MERGE SORT DISTR   |        |300      |1488|
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)     |:EX10001|300      |1460|
 | 
						|
|5 |     MERGE JOIN                   |        |300      |1460|
 | 
						|
|6 |      SORT                        |        |500      |966 |
 | 
						|
|7 |       PX PARTITION ITERATOR      |        |500      |331 |
 | 
						|
|8 |        TABLE SCAN                |t1      |500      |331 |
 | 
						|
|9 |      EXCHANGE IN MERGE SORT DISTR|        |300      |206 |
 | 
						|
|10|       EXCHANGE OUT DISTR (PKEY)  |:EX10000|300      |192 |
 | 
						|
|11|        PX PARTITION ITERATOR     |        |300      |192 |
 | 
						|
|12|         TABLE SCAN               |t2      |300      |192 |
 | 
						|
|13|   SORT                           |        |300      |554 |
 | 
						|
|14|    PX PARTITION ITERATOR         |        |300      |192 |
 | 
						|
|15|     TABLE SCAN                   |t2      |300      |192 |
 | 
						|
===============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([UNION([1])]), filter(nil), dop=1
 | 
						|
  2 - output([UNION([1])]), filter(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  4 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | 
						|
  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])
 | 
						|
  9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
 | 
						|
  10 - (#keys=1, [t2.c1]), output([t2.c1]), filter(nil), dop=1
 | 
						|
  11 - output([t2.c1]), filter(nil)
 | 
						|
  12 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  13 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  14 - output([t2.c1]), filter(nil)
 | 
						|
  15 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), 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" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 93(end)  ************** 
 | 
						|
 | 
						|
***************   Case 94   ***************
 | 
						|
 | 
						|
SQL: (select /*+ leading(@SEL$1 t4@YZ  t1@SEL$1) */ t1.c1 from t1 , (select/*+qb_name(yz) use_merge(@SEL$1 t1@SEL$1)*/ c1 from t4) t where t.c1 = t1.c1) union select c1 from t3; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |MERGE UNION DISTINCT          |        |300      |1692|
 | 
						|
|1 | PX COORDINATOR MERGE SORT    |        |100      |1212|
 | 
						|
|2 |  EXCHANGE OUT DISTR          |:EX10001|100      |1203|
 | 
						|
|3 |   MERGE JOIN                 |        |100      |1203|
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|6 |      TABLE SCAN              |t4      |100      |90  |
 | 
						|
|7 |    SORT                      |        |500      |966 |
 | 
						|
|8 |     PX PARTITION ITERATOR    |        |500      |331 |
 | 
						|
|9 |      TABLE SCAN              |t1      |500      |331 |
 | 
						|
|10| PX COORDINATOR MERGE SORT    |        |200      |381 |
 | 
						|
|11|  EXCHANGE OUT DISTR          |:EX20000|200      |372 |
 | 
						|
|12|   SORT                       |        |200      |372 |
 | 
						|
|13|    PX PARTITION ITERATOR     |        |200      |140 |
 | 
						|
|14|     TABLE SCAN               |t3      |200      |140 |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  2 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  4 - output([t4.c1]), filter(nil)
 | 
						|
  5 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  6 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  8 - output([t1.c1]), filter(nil)
 | 
						|
  9 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC])
 | 
						|
  11 - output([t3.c1]), filter(nil), dop=1
 | 
						|
  12 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
 | 
						|
  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.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")
 | 
						|
      FULL(@"SEL$3" "opt.t3"@"SEL$3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 94(end)  ************** 
 | 
						|
 | 
						|
***************   Case 95   ***************
 | 
						|
 | 
						|
SQL: (select t1.c1 from t1 , (select/*+qb_name(yz)*/ c1 from t4) t where t.c1 = t1.c1) union select/*+leading(@SEL$1 t4@YZ t1@SEL$1) use_merge(@SEL$1 t1@SEL$1)*/ c1 from t3; 
 | 
						|
 | 
						|
===========================================================
 | 
						|
|ID|OPERATOR                      |NAME    |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------
 | 
						|
|0 |MERGE UNION DISTINCT          |        |300      |1692|
 | 
						|
|1 | PX COORDINATOR MERGE SORT    |        |100      |1212|
 | 
						|
|2 |  EXCHANGE OUT DISTR          |:EX10001|100      |1203|
 | 
						|
|3 |   MERGE JOIN                 |        |100      |1203|
 | 
						|
|4 |    EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|6 |      TABLE SCAN              |t4      |100      |90  |
 | 
						|
|7 |    SORT                      |        |500      |966 |
 | 
						|
|8 |     PX PARTITION ITERATOR    |        |500      |331 |
 | 
						|
|9 |      TABLE SCAN              |t1      |500      |331 |
 | 
						|
|10| PX COORDINATOR MERGE SORT    |        |200      |381 |
 | 
						|
|11|  EXCHANGE OUT DISTR          |:EX20000|200      |372 |
 | 
						|
|12|   SORT                       |        |200      |372 |
 | 
						|
|13|    PX PARTITION ITERATOR     |        |200      |140 |
 | 
						|
|14|     TABLE SCAN               |t3      |200      |140 |
 | 
						|
===========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([UNION([1])]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  2 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t4.c1 = t1.c1]), other_conds(nil)
 | 
						|
  4 - output([t4.c1]), filter(nil)
 | 
						|
  5 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  6 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  8 - output([t1.c1]), filter(nil)
 | 
						|
  9 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC])
 | 
						|
  11 - output([t3.c1]), filter(nil), dop=1
 | 
						|
  12 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
 | 
						|
  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.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")
 | 
						|
      FULL(@"SEL$3" "opt.t3"@"SEL$3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 95(end)  ************** 
 | 
						|
 | 
						|
***************   Case 96   ***************
 | 
						|
 | 
						|
SQL: select/*+index(@SEL$1 t4 idx_t4_c2) */t1.c1 from t1 where t1.c1 in (select t4.c1 from t4 group by t4.c2); 
 | 
						|
 | 
						|
================================================================
 | 
						|
|ID|OPERATOR                      |NAME         |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |             |100      |1315|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001     |100      |1311|
 | 
						|
|2 |  MERGE SEMI JOIN             |             |100      |1311|
 | 
						|
|3 |   SORT                       |             |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR     |             |500      |331 |
 | 
						|
|5 |     TABLE SCAN               |t1           |500      |331 |
 | 
						|
|6 |   SORT                       |             |100      |203 |
 | 
						|
|7 |    EXCHANGE IN DISTR         |             |100      |95  |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|9 |      SUBPLAN SCAN            |VIEW1        |100      |90  |
 | 
						|
|10|       MERGE GROUP BY         |             |100      |77  |
 | 
						|
|11|        TABLE SCAN            |t4(idx_t4_c2)|100      |54  |
 | 
						|
================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC])
 | 
						|
  7 - output([VIEW1.c1]), filter(nil)
 | 
						|
  8 - (#keys=1, [VIEW1.c1]), output([VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW1.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      group([t4.c2]), agg_func(nil)
 | 
						|
  11 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      access([t4.c1], [t4.c2]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "VIEW1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$2")
 | 
						|
      INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 96(end)  ************** 
 | 
						|
 | 
						|
***************   Case 97   ***************
 | 
						|
 | 
						|
SQL: select/*+index(@SEL$2 t4 idx_t4_c2) */t1.c1 from t1 where t1.c1 in (select t4.c1 from t4 group by t4.c2); 
 | 
						|
 | 
						|
================================================================
 | 
						|
|ID|OPERATOR                      |NAME         |EST. ROWS|COST|
 | 
						|
----------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                |             |100      |1315|
 | 
						|
|1 | EXCHANGE OUT DISTR           |:EX10001     |100      |1311|
 | 
						|
|2 |  MERGE SEMI JOIN             |             |100      |1311|
 | 
						|
|3 |   SORT                       |             |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR     |             |500      |331 |
 | 
						|
|5 |     TABLE SCAN               |t1           |500      |331 |
 | 
						|
|6 |   SORT                       |             |100      |203 |
 | 
						|
|7 |    EXCHANGE IN DISTR         |             |100      |95  |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|9 |      SUBPLAN SCAN            |VIEW1        |100      |90  |
 | 
						|
|10|       MERGE GROUP BY         |             |100      |77  |
 | 
						|
|11|        TABLE SCAN            |t4(idx_t4_c2)|100      |54  |
 | 
						|
================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC])
 | 
						|
  7 - output([VIEW1.c1]), filter(nil)
 | 
						|
  8 - (#keys=1, [VIEW1.c1]), output([VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW1.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      group([t4.c2]), agg_func(nil)
 | 
						|
  11 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      access([t4.c1], [t4.c2]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "VIEW1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$2")
 | 
						|
      INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 97(end)  ************** 
 | 
						|
 | 
						|
***************   Case 98   ***************
 | 
						|
 | 
						|
SQL: select/*+index(@SEL$2 t4 idx_t4_c2) */t1.c1 from t1 where t1.c1 in (select/*+index(t4 idx_t4_c3)*/ t4.c1 from t4, (select t5.c1 from t5) t_a where t4.c2 > 1 and t4.c2 < 3 and t_a.c1 = t4.c1 group by t4.c2); 
 | 
						|
 | 
						|
==================================================================
 | 
						|
|ID|OPERATOR                        |NAME         |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                  |             |72       |2087|
 | 
						|
|1 | EXCHANGE OUT DISTR             |:EX10002     |72       |2083|
 | 
						|
|2 |  MERGE SEMI JOIN               |             |72       |2083|
 | 
						|
|3 |   SORT                         |             |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR       |             |500      |331 |
 | 
						|
|5 |     TABLE SCAN                 |t1           |500      |331 |
 | 
						|
|6 |   SORT                         |             |100      |993 |
 | 
						|
|7 |    EXCHANGE IN DISTR           |             |100      |885 |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)  |:EX10001     |100      |880 |
 | 
						|
|9 |      SUBPLAN SCAN              |VIEW1        |100      |880 |
 | 
						|
|10|       HASH GROUP BY            |             |100      |866 |
 | 
						|
|11|        HASH JOIN               |             |290      |700 |
 | 
						|
|12|         TABLE SCAN             |t4(idx_t4_c2)|100      |54  |
 | 
						|
|13|         EXCHANGE IN DISTR      |             |300      |247 |
 | 
						|
|14|          EXCHANGE OUT DISTR    |:EX10000     |300      |205 |
 | 
						|
|15|           PX PARTITION ITERATOR|             |300      |205 |
 | 
						|
|16|            TABLE SCAN          |t5           |300      |205 |
 | 
						|
==================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC])
 | 
						|
  7 - output([VIEW1.c1]), filter(nil)
 | 
						|
  8 - (#keys=1, [VIEW1.c1]), output([VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW1.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      group([t4.c2]), agg_func(nil)
 | 
						|
  11 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      equal_conds([t5.c1 = t4.c1]), other_conds(nil)
 | 
						|
  12 - output([t4.c2], [t4.c1]), filter(nil), 
 | 
						|
      access([t4.c2], [t4.c1]), partitions(p0)
 | 
						|
  13 - output([t5.c1]), filter(nil)
 | 
						|
  14 - output([t5.c1]), filter(nil), dop=1
 | 
						|
  15 - output([t5.c1]), filter(nil)
 | 
						|
  16 - output([t5.c1]), filter(nil), 
 | 
						|
      access([t5.c1]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "VIEW1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      USE_HASH_AGGREGATION(@"SEL$2")
 | 
						|
      LEADING(@"SEL$2" ("opt.t4"@"SEL$2" "opt.t5"@"SEL$2" ))
 | 
						|
      USE_HASH(@"SEL$2" ("opt.t5"@"SEL$2" ))
 | 
						|
      INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | 
						|
      FULL(@"SEL$2" "opt.t5"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 98(end)  ************** 
 | 
						|
 | 
						|
***************   Case 99   ***************
 | 
						|
 | 
						|
SQL: select/*+index(@SEL$2 t4 idx_t4_c2) */t1.c1 from t1 where t1.c1 in (select/*+index(t4 idx_t4_c3)*/ t4.c1 from t4, (select t5.c1 from t5) t_a where t4.c3 > 1 and t4.c3 < 3 and t_a.c1 = t4.c1 group by t4.c2); 
 | 
						|
 | 
						|
==================================================================
 | 
						|
|ID|OPERATOR                        |NAME         |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                  |             |72       |2143|
 | 
						|
|1 | EXCHANGE OUT DISTR             |:EX10002     |72       |2140|
 | 
						|
|2 |  MERGE SEMI JOIN               |             |72       |2140|
 | 
						|
|3 |   SORT                         |             |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR       |             |500      |331 |
 | 
						|
|5 |     TABLE SCAN                 |t1           |500      |331 |
 | 
						|
|6 |   SORT                         |             |100      |1049|
 | 
						|
|7 |    EXCHANGE IN DISTR           |             |100      |941 |
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)  |:EX10001     |100      |937 |
 | 
						|
|9 |      SUBPLAN SCAN              |VIEW1        |100      |937 |
 | 
						|
|10|       HASH GROUP BY            |             |100      |923 |
 | 
						|
|11|        HASH JOIN               |             |290      |756 |
 | 
						|
|12|         TABLE SCAN             |t4(idx_t4_c3)|100      |92  |
 | 
						|
|13|         EXCHANGE IN DISTR      |             |300      |247 |
 | 
						|
|14|          EXCHANGE OUT DISTR    |:EX10000     |300      |205 |
 | 
						|
|15|           PX PARTITION ITERATOR|             |300      |205 |
 | 
						|
|16|            TABLE SCAN          |t5           |300      |205 |
 | 
						|
==================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC])
 | 
						|
  7 - output([VIEW1.c1]), filter(nil)
 | 
						|
  8 - (#keys=1, [VIEW1.c1]), output([VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW1.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      group([t4.c2]), agg_func(nil)
 | 
						|
  11 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      equal_conds([t5.c1 = t4.c1]), other_conds(nil)
 | 
						|
  12 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      access([t4.c1], [t4.c2]), partitions(p0)
 | 
						|
  13 - output([t5.c1]), filter(nil)
 | 
						|
  14 - output([t5.c1]), filter(nil), dop=1
 | 
						|
  15 - output([t5.c1]), filter(nil)
 | 
						|
  16 - output([t5.c1]), filter(nil), 
 | 
						|
      access([t5.c1]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "VIEW1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      USE_HASH_AGGREGATION(@"SEL$2")
 | 
						|
      LEADING(@"SEL$2" ("opt.t4"@"SEL$2" "opt.t5"@"SEL$2" ))
 | 
						|
      USE_HASH(@"SEL$2" ("opt.t5"@"SEL$2" ))
 | 
						|
      INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c3")
 | 
						|
      FULL(@"SEL$2" "opt.t5"@"SEL$2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 99(end)  ************** 
 | 
						|
 | 
						|
***************   Case 100   ***************
 | 
						|
 | 
						|
SQL: select/*+index(@SEL$2 t4 idx_t4_c2) leading(@SEL$2 t5@SEL$3 t4@SEL$2)*/t1.c1 from t1 where t1.c1 in (select t4.c1 from t4, (select t5.c1 from t5) t_a where t_a.c1 = t4.c1 group by t4.c2); 
 | 
						|
 | 
						|
==================================================================
 | 
						|
|ID|OPERATOR                        |NAME         |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                  |             |72       |2332|
 | 
						|
|1 | EXCHANGE OUT DISTR             |:EX10002     |72       |2329|
 | 
						|
|2 |  MERGE SEMI JOIN               |             |72       |2329|
 | 
						|
|3 |   SORT                         |             |500      |966 |
 | 
						|
|4 |    PX PARTITION ITERATOR       |             |500      |331 |
 | 
						|
|5 |     TABLE SCAN                 |t1           |500      |331 |
 | 
						|
|6 |   SORT                         |             |100      |1238|
 | 
						|
|7 |    EXCHANGE IN DISTR           |             |100      |1130|
 | 
						|
|8 |     EXCHANGE OUT DISTR (PKEY)  |:EX10001     |100      |1126|
 | 
						|
|9 |      SUBPLAN SCAN              |VIEW1        |100      |1126|
 | 
						|
|10|       HASH GROUP BY            |             |100      |1112|
 | 
						|
|11|        HASH JOIN               |             |290      |945 |
 | 
						|
|12|         EXCHANGE IN DISTR      |             |300      |247 |
 | 
						|
|13|          EXCHANGE OUT DISTR    |:EX10000     |300      |205 |
 | 
						|
|14|           PX PARTITION ITERATOR|             |300      |205 |
 | 
						|
|15|            TABLE SCAN          |t5           |300      |205 |
 | 
						|
|16|         TABLE SCAN             |t4(idx_t4_c2)|100      |54  |
 | 
						|
==================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  4 - output([t1.c1]), filter(nil)
 | 
						|
  5 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  6 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC])
 | 
						|
  7 - output([VIEW1.c1]), filter(nil)
 | 
						|
  8 - (#keys=1, [VIEW1.c1]), output([VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  9 - output([VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW1.c1])
 | 
						|
  10 - output([t4.c1]), filter(nil), 
 | 
						|
      group([t4.c2]), agg_func(nil)
 | 
						|
  11 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      equal_conds([t5.c1 = t4.c1]), other_conds(nil)
 | 
						|
  12 - output([t5.c1]), filter(nil)
 | 
						|
  13 - output([t5.c1]), filter(nil), dop=1
 | 
						|
  14 - output([t5.c1]), filter(nil)
 | 
						|
  15 - output([t5.c1]), filter(nil), 
 | 
						|
      access([t5.c1]), partitions(p[0-2])
 | 
						|
  16 - output([t4.c1], [t4.c2]), filter(nil), 
 | 
						|
      access([t4.c1], [t4.c2]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "VIEW1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | 
						|
      USE_HASH_AGGREGATION(@"SEL$2")
 | 
						|
      LEADING(@"SEL$2" ("opt.t5"@"SEL$2" "opt.t4"@"SEL$2" ))
 | 
						|
      USE_HASH(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | 
						|
      FULL(@"SEL$2" "opt.t5"@"SEL$2")
 | 
						|
      INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 100(end)  ************** 
 | 
						|
 | 
						|
***************   Case 101   ***************
 | 
						|
 | 
						|
SQL: select * from hint.t1 where a in (select * from (select max(t1.a) from hint.t1, hint.t2) as tt); 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN             |            |1        |9181|
 | 
						|
|1 | SUBPLAN SCAN                |VIEW1       |1        |9145|
 | 
						|
|2 |  SCALAR GROUP BY            |            |1        |9145|
 | 
						|
|3 |   NESTED-LOOP JOIN CARTESIAN|            |10000    |7235|
 | 
						|
|4 |    TABLE SCAN               |t1(idx_t1_a)|100      |52  |
 | 
						|
|5 |    MATERIAL                 |            |100      |106 |
 | 
						|
|6 |     TABLE SCAN              |t2          |100      |88  |
 | 
						|
|7 | TABLE GET                   |t1          |1        |36  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([VIEW1.max(t1.a)])
 | 
						|
  1 - output([VIEW1.max(t1.a)]), filter(nil), 
 | 
						|
      access([VIEW1.max(t1.a)])
 | 
						|
  2 - output([T_FUN_MAX(t1.a)]), filter(nil), 
 | 
						|
      group(nil), agg_func([T_FUN_MAX(t1.a)])
 | 
						|
  3 - output([t1.a]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  4 - output([t1.a]), filter(nil), 
 | 
						|
      access([t1.a]), partitions(p0)
 | 
						|
  5 - output([1]), filter(nil)
 | 
						|
  6 - output([1]), filter(nil), 
 | 
						|
      access([t2.a]), partitions(p0)
 | 
						|
  7 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      LEADING(@"SEL$3" ("hint.t1"@"SEL$3" "hint.t2"@"SEL$3" ))
 | 
						|
      USE_NL(@"SEL$3" ("hint.t2"@"SEL$3" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$3" ("hint.t2"@"SEL$3" ))
 | 
						|
      INDEX(@"SEL$3" "hint.t1"@"SEL$3" "idx_t1_a")
 | 
						|
      FULL(@"SEL$3" "hint.t2"@"SEL$3")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 101(end)  ************** 
 | 
						|
 | 
						|
***************   Case 102   ***************
 | 
						|
 | 
						|
SQL: select   /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$3" "hint.t2"@"SEL$3") LEADING(@"SEL$3" "hint.t2"@"SEL$3" "hint.t1"@"SEL$3") END_OUTLINE_DATA */* from hint.t1 where a in (select * from (select max(t1.a) from hint.t1, hint.t2) as tt); 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                     |NAME        |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |NESTED-LOOP JOIN             |            |1        |9181|
 | 
						|
|1 | SUBPLAN SCAN                |VIEW1       |1        |9145|
 | 
						|
|2 |  SCALAR GROUP BY            |            |1        |9145|
 | 
						|
|3 |   NESTED-LOOP JOIN CARTESIAN|            |10000    |7235|
 | 
						|
|4 |    TABLE SCAN               |t2          |100      |88  |
 | 
						|
|5 |    MATERIAL                 |            |100      |71  |
 | 
						|
|6 |     TABLE SCAN              |t1(idx_t1_a)|100      |52  |
 | 
						|
|7 | TABLE GET                   |t1          |1        |36  |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      conds(nil), nl_params_([VIEW1.max(t1.a)])
 | 
						|
  1 - output([VIEW1.max(t1.a)]), filter(nil), 
 | 
						|
      access([VIEW1.max(t1.a)])
 | 
						|
  2 - output([T_FUN_MAX(t1.a)]), filter(nil), 
 | 
						|
      group(nil), agg_func([T_FUN_MAX(t1.a)])
 | 
						|
  3 - output([t1.a]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  4 - output([1]), filter(nil), 
 | 
						|
      access([t2.a]), partitions(p0)
 | 
						|
  5 - output([t1.a]), filter(nil)
 | 
						|
  6 - output([t1.a]), filter(nil), 
 | 
						|
      access([t1.a]), partitions(p0)
 | 
						|
  7 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "hint.t1"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      NO_USE_NL_MATERIALIZATION(@"SEL$1" ("hint.t1"@"SEL$1" ))
 | 
						|
      LEADING(@"SEL$3" ("hint.t2"@"SEL$3" "hint.t1"@"SEL$3" ))
 | 
						|
      USE_NL(@"SEL$3" ("hint.t1"@"SEL$3" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$3" ("hint.t1"@"SEL$3" ))
 | 
						|
      FULL(@"SEL$3" "hint.t2"@"SEL$3")
 | 
						|
      INDEX(@"SEL$3" "hint.t1"@"SEL$3" "idx_t1_a")
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 102(end)  ************** 
 | 
						|
 | 
						|
***************   Case 103   ***************
 | 
						|
 | 
						|
SQL: select t1.c1 from t1, (select t2.c1 from t2, (select t3.c1 from t3) t_a where t_a.c1 = t2.c1) t_a1 where t_a1.c1 = t1.c1 and t1.c1 in (select t4.c1 from t4); 
 | 
						|
 | 
						|
==================================================================
 | 
						|
|ID|OPERATOR                             |NAME    |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                       |        |40       |2335|
 | 
						|
|1 | EXCHANGE OUT DISTR                  |:EX10003|40       |2329|
 | 
						|
|2 |  MERGE JOIN                         |        |40       |2329|
 | 
						|
|3 |   EXCHANGE IN MERGE SORT DISTR      |        |60       |1898|
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)        |:EX10002|60       |1892|
 | 
						|
|5 |     MATERIAL                        |        |60       |1892|
 | 
						|
|6 |      MERGE JOIN                     |        |60       |1870|
 | 
						|
|7 |       EXCHANGE IN MERGE SORT DISTR  |        |100      |1226|
 | 
						|
|8 |        EXCHANGE OUT DISTR (PKEY)    |:EX10001|100      |1221|
 | 
						|
|9 |         MATERIAL                    |        |100      |1221|
 | 
						|
|10|          MERGE SEMI JOIN            |        |100      |1203|
 | 
						|
|11|           SORT                      |        |500      |966 |
 | 
						|
|12|            PX PARTITION ITERATOR    |        |500      |331 |
 | 
						|
|13|             TABLE SCAN              |t1      |500      |331 |
 | 
						|
|14|           EXCHANGE IN DISTR         |        |100      |95  |
 | 
						|
|15|            EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | 
						|
|16|             TABLE SCAN              |t4      |100      |90  |
 | 
						|
|17|       SORT                          |        |300      |554 |
 | 
						|
|18|        PX PARTITION ITERATOR        |        |300      |192 |
 | 
						|
|19|         TABLE SCAN                  |t2      |300      |192 |
 | 
						|
|20|   SORT                              |        |200      |372 |
 | 
						|
|21|    PX PARTITION ITERATOR            |        |200      |140 |
 | 
						|
|22|     TABLE SCAN                      |t3      |200      |140 |
 | 
						|
==================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t3.c1 = t2.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC])
 | 
						|
  4 - (#keys=1, [t2.c1]), output([t1.c1], [t2.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1], [t2.c1]), filter(nil)
 | 
						|
  6 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      equal_conds([t2.c1 = t1.c1]), other_conds(nil)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  8 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  9 - output([t1.c1]), filter(nil)
 | 
						|
  10 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t4.c1]), other_conds(nil)
 | 
						|
  11 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  12 - output([t1.c1]), filter(nil)
 | 
						|
  13 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  14 - output([t4.c1]), filter(nil)
 | 
						|
  15 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  16 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  17 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  18 - output([t2.c1]), filter(nil)
 | 
						|
  19 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  20 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
 | 
						|
  21 - output([t3.c1]), filter(nil)
 | 
						|
  22 - output([t3.c1]), filter(nil), 
 | 
						|
      access([t3.c1]), partitions(p[0-1])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" )"opt.t2"@"SEL$1" )"opt.t3"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t3"@"SEL$1" ) PARTITION NONE)
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE)
 | 
						|
      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")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t3"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 103(end)  ************** 
 | 
						|
 | 
						|
***************   Case 104   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL$1 t1 t4 t3 t2) index(@SEL$4 t4 idx_t4_c3)*/ t1.c1 from t1, (select t2.c1 from t2, (select t3.c1 from t3) t_a where t_a.c1 = t2.c1) t_a1 where t_a1.c1 = t1.c1 and t1.c1 in (select t4.c1 from t4); 
 | 
						|
 | 
						|
=======================================================================
 | 
						|
|ID|OPERATOR                             |NAME         |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                       |             |40       |2517|
 | 
						|
|1 | EXCHANGE OUT DISTR                  |:EX10003     |40       |2509|
 | 
						|
|2 |  MERGE JOIN                         |             |40       |2509|
 | 
						|
|3 |   EXCHANGE IN MERGE SORT DISTR      |             |60       |2079|
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)        |:EX10002     |60       |2070|
 | 
						|
|5 |     MATERIAL                        |             |60       |2070|
 | 
						|
|6 |      MERGE JOIN                     |             |60       |2037|
 | 
						|
|7 |       EXCHANGE IN MERGE SORT DISTR  |             |100      |1393|
 | 
						|
|8 |        EXCHANGE OUT DISTR (PKEY)    |:EX10001     |100      |1383|
 | 
						|
|9 |         MATERIAL                    |             |100      |1383|
 | 
						|
|10|          MERGE JOIN                 |             |100      |1346|
 | 
						|
|11|           SORT                      |             |500      |966 |
 | 
						|
|12|            PX PARTITION ITERATOR    |             |500      |331 |
 | 
						|
|13|             TABLE SCAN              |t1           |500      |331 |
 | 
						|
|14|           EXCHANGE IN DISTR         |             |100      |239 |
 | 
						|
|15|            EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |234 |
 | 
						|
|16|             SUBPLAN SCAN            |VIEW2        |100      |234 |
 | 
						|
|17|              MERGE DISTINCT         |             |100      |220 |
 | 
						|
|18|               SORT                  |             |100      |198 |
 | 
						|
|19|                TABLE SCAN           |t4(idx_t4_c3)|100      |90  |
 | 
						|
|20|       SORT                          |             |300      |554 |
 | 
						|
|21|        PX PARTITION ITERATOR        |             |300      |192 |
 | 
						|
|22|         TABLE SCAN                  |t2           |300      |192 |
 | 
						|
|23|   SORT                              |             |200      |372 |
 | 
						|
|24|    PX PARTITION ITERATOR            |             |200      |140 |
 | 
						|
|25|     TABLE SCAN                      |t3           |200      |140 |
 | 
						|
=======================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t3.c1 = t2.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC])
 | 
						|
  4 - (#keys=1, [t2.c1]), output([t1.c1], [t2.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1], [t2.c1]), filter(nil)
 | 
						|
  6 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      equal_conds([t2.c1 = t1.c1]), other_conds(nil)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  8 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  9 - output([t1.c1]), filter(nil)
 | 
						|
  10 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = VIEW2.VIEW1.c1]), other_conds(nil)
 | 
						|
  11 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  12 - output([t1.c1]), filter(nil)
 | 
						|
  13 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  14 - output([VIEW2.VIEW1.c1]), filter(nil)
 | 
						|
  15 - (#keys=1, [VIEW2.VIEW1.c1]), output([VIEW2.VIEW1.c1]), filter(nil), is_single, dop=1
 | 
						|
  16 - output([VIEW2.VIEW1.c1]), filter(nil), 
 | 
						|
      access([VIEW2.VIEW1.c1])
 | 
						|
  17 - output([t4.c1]), filter(nil), 
 | 
						|
      distinct([t4.c1])
 | 
						|
  18 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC])
 | 
						|
  19 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  20 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  21 - output([t2.c1]), filter(nil)
 | 
						|
  22 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  23 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
 | 
						|
  24 - output([t3.c1]), filter(nil)
 | 
						|
  25 - output([t3.c1]), filter(nil), 
 | 
						|
      access([t3.c1]), partitions(p[0-1])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$6" ((("opt.t1"@"SEL$6" "VIEW2"@"SEL$6" )"opt.t2"@"SEL$6" )"opt.t3"@"SEL$6" ))
 | 
						|
      USE_MERGE(@"SEL$6" ("opt.t3"@"SEL$6" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$6" ("opt.t3"@"SEL$6" ) PARTITION NONE)
 | 
						|
      USE_MERGE(@"SEL$6" ("opt.t2"@"SEL$6" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$6" ("opt.t2"@"SEL$6" ) PARTITION NONE)
 | 
						|
      USE_MERGE(@"SEL$6" ("VIEW2"@"SEL$6" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$6" ("VIEW2"@"SEL$6" ) NONE PARTITION)
 | 
						|
      FULL(@"SEL$6" "opt.t1"@"SEL$6")
 | 
						|
      INDEX(@"SEL$5" "opt.t4"@"SEL$5" "idx_t4_c3")
 | 
						|
      FULL(@"SEL$6" "opt.t2"@"SEL$6")
 | 
						|
      FULL(@"SEL$6" "opt.t3"@"SEL$6")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 104(end)  ************** 
 | 
						|
 | 
						|
***************   Case 105   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading(@SEL1 t1 t4 t3 t2) index(@SEL$4 t4 idx_t4_c3)*/ t1.c1 from t1, (select t2.c1 from t2, (select t3.c1 from t3) t_a where t_a.c1 = t2.c1) t_a1 where t_a1.c1 = t1.c1 and t1.c1 in (select t4.c1 from t4); 
 | 
						|
 | 
						|
=======================================================================
 | 
						|
|ID|OPERATOR                             |NAME         |EST. ROWS|COST|
 | 
						|
-----------------------------------------------------------------------
 | 
						|
|0 |PX COORDINATOR                       |             |40       |2424|
 | 
						|
|1 | EXCHANGE OUT DISTR                  |:EX10003     |40       |2418|
 | 
						|
|2 |  MERGE JOIN                         |             |40       |2418|
 | 
						|
|3 |   EXCHANGE IN MERGE SORT DISTR      |             |60       |1987|
 | 
						|
|4 |    EXCHANGE OUT DISTR (PKEY)        |:EX10002     |60       |1982|
 | 
						|
|5 |     MATERIAL                        |             |60       |1982|
 | 
						|
|6 |      MERGE JOIN                     |             |60       |1960|
 | 
						|
|7 |       EXCHANGE IN MERGE SORT DISTR  |             |100      |1315|
 | 
						|
|8 |        EXCHANGE OUT DISTR (PKEY)    |:EX10001     |100      |1310|
 | 
						|
|9 |         MERGE SEMI JOIN             |             |100      |1310|
 | 
						|
|10|          SORT                       |             |500      |966 |
 | 
						|
|11|           PX PARTITION ITERATOR     |             |500      |331 |
 | 
						|
|12|            TABLE SCAN               |t1           |500      |331 |
 | 
						|
|13|          SORT                       |             |100      |203 |
 | 
						|
|14|           EXCHANGE IN DISTR         |             |100      |95  |
 | 
						|
|15|            EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|16|             TABLE SCAN              |t4(idx_t4_c3)|100      |90  |
 | 
						|
|17|       SORT                          |             |300      |554 |
 | 
						|
|18|        PX PARTITION ITERATOR        |             |300      |192 |
 | 
						|
|19|         TABLE SCAN                  |t2           |300      |192 |
 | 
						|
|20|   SORT                              |             |200      |372 |
 | 
						|
|21|    PX PARTITION ITERATOR            |             |200      |140 |
 | 
						|
|22|     TABLE SCAN                      |t3           |200      |140 |
 | 
						|
=======================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil)
 | 
						|
  1 - output([t1.c1]), filter(nil), dop=1
 | 
						|
  2 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t3.c1 = t2.c1]), other_conds(nil)
 | 
						|
  3 - output([t1.c1], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC])
 | 
						|
  4 - (#keys=1, [t2.c1]), output([t1.c1], [t2.c1]), filter(nil), dop=1
 | 
						|
  5 - output([t1.c1], [t2.c1]), filter(nil)
 | 
						|
  6 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      equal_conds([t2.c1 = t1.c1]), other_conds(nil)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  8 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  9 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t4.c1]), other_conds(nil)
 | 
						|
  10 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  11 - output([t1.c1]), filter(nil)
 | 
						|
  12 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC])
 | 
						|
  14 - output([t4.c1]), filter(nil)
 | 
						|
  15 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  16 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  17 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  18 - output([t2.c1]), filter(nil)
 | 
						|
  19 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  20 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
 | 
						|
  21 - output([t3.c1]), filter(nil)
 | 
						|
  22 - output([t3.c1]), filter(nil), 
 | 
						|
      access([t3.c1]), partitions(p[0-1])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" )"opt.t2"@"SEL$1" )"opt.t3"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t3"@"SEL$1" ) PARTITION NONE)
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE)
 | 
						|
      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")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.t3"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 105(end)  ************** 
 | 
						|
 | 
						|
***************   Case 106   ***************
 | 
						|
 | 
						|
SQL: select /*+index(@SEL$3 t5@SEL$3 idx_t5_c2) index(@SEL$4 t4 idx_t4_c3)*/ t1.c1 from t1, (select t2.c1 from t2, (select t5.c1 from t5 group by t5.c2) t_a where t_a.c1 = t2.c1) t_a1 where t_a1.c1 = t1.c1 and t1.c1 in (select t4.c1 from t4); 
 | 
						|
 | 
						|
====================================================================
 | 
						|
|ID|OPERATOR                          |NAME         |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------------
 | 
						|
|0 |HASH JOIN                         |             |20       |4094|
 | 
						|
|1 | PX COORDINATOR                   |             |60       |1965|
 | 
						|
|2 |  EXCHANGE OUT DISTR              |:EX10002     |60       |1960|
 | 
						|
|3 |   MERGE JOIN                     |             |60       |1960|
 | 
						|
|4 |    EXCHANGE IN MERGE SORT DISTR  |             |100      |1315|
 | 
						|
|5 |     EXCHANGE OUT DISTR (PKEY)    |:EX10001     |100      |1310|
 | 
						|
|6 |      MERGE SEMI JOIN             |             |100      |1310|
 | 
						|
|7 |       SORT                       |             |500      |966 |
 | 
						|
|8 |        PX PARTITION ITERATOR     |             |500      |331 |
 | 
						|
|9 |         TABLE SCAN               |t1           |500      |331 |
 | 
						|
|10|       SORT                       |             |100      |203 |
 | 
						|
|11|        EXCHANGE IN DISTR         |             |100      |95  |
 | 
						|
|12|         EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | 
						|
|13|          TABLE SCAN              |t4(idx_t4_c3)|100      |90  |
 | 
						|
|14|    SORT                          |             |300      |554 |
 | 
						|
|15|     PX PARTITION ITERATOR        |             |300      |192 |
 | 
						|
|16|      TABLE SCAN                  |t2           |300      |192 |
 | 
						|
|17| PX COORDINATOR                   |             |100      |2008|
 | 
						|
|18|  EXCHANGE OUT DISTR              |:EX20001     |100      |2003|
 | 
						|
|19|   SUBPLAN SCAN                   |t_a          |100      |2003|
 | 
						|
|20|    MERGE GROUP BY                |             |100      |1989|
 | 
						|
|21|     EXCHANGE IN MERGE SORT DISTR |             |100      |1923|
 | 
						|
|22|      EXCHANGE OUT DISTR (HASH)   |:EX20000     |100      |1909|
 | 
						|
|23|       PX PARTITION ITERATOR      |             |100      |1909|
 | 
						|
|24|        MERGE GROUP BY            |             |100      |1909|
 | 
						|
|25|         TABLE SCAN               |t5(idx_t5_c2)|300      |1842|
 | 
						|
====================================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t_a.c1 = t2.c1]), other_conds(nil)
 | 
						|
  1 - output([t1.c1], [t2.c1]), filter(nil)
 | 
						|
  2 - output([t1.c1], [t2.c1]), filter(nil), dop=1
 | 
						|
  3 - output([t1.c1], [t2.c1]), filter(nil), 
 | 
						|
      equal_conds([t2.c1 = t1.c1]), other_conds(nil)
 | 
						|
  4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
 | 
						|
  5 - (#keys=1, [t1.c1]), output([t1.c1]), filter(nil), dop=1
 | 
						|
  6 - output([t1.c1]), filter(nil), 
 | 
						|
      equal_conds([t1.c1 = t4.c1]), other_conds(nil)
 | 
						|
  7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | 
						|
  8 - output([t1.c1]), filter(nil)
 | 
						|
  9 - output([t1.c1]), filter(nil), 
 | 
						|
      access([t1.c1]), partitions(p[0-4])
 | 
						|
  10 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC])
 | 
						|
  11 - output([t4.c1]), filter(nil)
 | 
						|
  12 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | 
						|
  13 - output([t4.c1]), filter(nil), 
 | 
						|
      access([t4.c1]), partitions(p0)
 | 
						|
  14 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
 | 
						|
  15 - output([t2.c1]), filter(nil)
 | 
						|
  16 - output([t2.c1]), filter(nil), 
 | 
						|
      access([t2.c1]), partitions(p[0-2])
 | 
						|
  17 - output([t_a.c1]), filter(nil)
 | 
						|
  18 - output([t_a.c1]), filter(nil), dop=1
 | 
						|
  19 - output([t_a.c1]), filter(nil), 
 | 
						|
      access([t_a.c1])
 | 
						|
  20 - output([t5.c1]), filter(nil), 
 | 
						|
      group([t5.c2]), agg_func(nil)
 | 
						|
  21 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c2, ASC]), Local Order
 | 
						|
  22 - (#keys=1, [t5.c2]), output([t5.c1], [t5.c2]), filter(nil), dop=1
 | 
						|
  23 - output([t5.c1], [t5.c2]), filter(nil)
 | 
						|
  24 - output([t5.c1], [t5.c2]), filter(nil), 
 | 
						|
      group([t5.c2]), agg_func(nil)
 | 
						|
  25 - output([t5.c2], [t5.c1]), filter(nil), 
 | 
						|
      access([t5.c2], [t5.c1]), partitions(p[0-2])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ((("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" )"opt.t2"@"SEL$1" )"t_a"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("t_a"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE)
 | 
						|
      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")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$3")
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$3")
 | 
						|
      INDEX(@"SEL$3" "opt.t5"@"SEL$3" "idx_t5_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 106(end)  ************** 
 | 
						|
 | 
						|
***************   Case 107   ***************
 | 
						|
 | 
						|
SQL: select c2 from t_idx use index(t_c2); 
 | 
						|
 | 
						|
==================================================
 | 
						|
|ID|OPERATOR  |NAME               |EST. ROWS|COST|
 | 
						|
--------------------------------------------------
 | 
						|
|0 |TABLE SCAN|t_idx(idx_t_idx_c2)|100      |54  |
 | 
						|
==================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t_idx.c2]), filter(nil), 
 | 
						|
      access([t_idx.c2]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t_idx"@"SEL$1" "idx_t_idx_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 107(end)  ************** 
 | 
						|
 | 
						|
***************   Case 108   ***************
 | 
						|
 | 
						|
SQL: select c120 from t_idx use index (idx_t_idx_c2, idx_t_idx_c3, idx_t_idx_c4, idx_t_idx_c5, idx_t_idx_c6, idx_t_idx_c7, idx_t_idx_c8, idx_t_idx_c9, idx_t_idx_c10, idx_t_idx_c11, idx_t_idx_c12, idx_t_idx_c13, idx_t_idx_c14, idx_t_idx_c15, idx_t_idx_c16, idx_t_idx_c17, idx_t_idx_c18, idx_t_idx_c19, idx_t_idx_c20, idx_t_idx_c21, idx_t_idx_c22, idx_t_idx_c23, idx_t_idx_c24, idx_t_idx_c25, idx_t_idx_c26, idx_t_idx_c27, idx_t_idx_c28, idx_t_idx_c29, idx_t_idx_c30, idx_t_idx_c31, idx_t_idx_c32, idx_t_idx_c33, idx_t_idx_c34, idx_t_idx_c35, idx_t_idx_c36, idx_t_idx_c37, idx_t_idx_c38, idx_t_idx_c39, idx_t_idx_c40, idx_t_idx_c41, idx_t_idx_c42, idx_t_idx_c43, idx_t_idx_c44, idx_t_idx_c45, idx_t_idx_c46, idx_t_idx_c47, idx_t_idx_c48, idx_t_idx_c49, idx_t_idx_c50, idx_t_idx_c51, idx_t_idx_c52, idx_t_idx_c53, idx_t_idx_c54, idx_t_idx_c55, idx_t_idx_c56, idx_t_idx_c57, idx_t_idx_c58, idx_t_idx_c59, idx_t_idx_c60, idx_t_idx_c61, idx_t_idx_c62, idx_t_idx_c63, idx_t_idx_c64, idx_t_idx_c65, idx_t_idx_c66, idx_t_idx_c67, idx_t_idx_c68, idx_t_idx_c69, idx_t_idx_c70, idx_t_idx_c71, idx_t_idx_c72, idx_t_idx_c73, idx_t_idx_c74, idx_t_idx_c75, idx_t_idx_c76, idx_t_idx_c77, idx_t_idx_c78, idx_t_idx_c79, idx_t_idx_c80, idx_t_idx_c81, idx_t_idx_c82, idx_t_idx_c83, idx_t_idx_c84, idx_t_idx_c85, idx_t_idx_c86, idx_t_idx_c87, idx_t_idx_c88, idx_t_idx_c89, idx_t_idx_c90, idx_t_idx_c91, idx_t_idx_c92, idx_t_idx_c93, idx_t_idx_c94, idx_t_idx_c95, idx_t_idx_c96, idx_t_idx_c97, idx_t_idx_c98, idx_t_idx_c99, idx_t_idx_c100, idx_t_idx_c101, idx_t_idx_c102, idx_t_idx_c103, idx_t_idx_c104, idx_t_idx_c105, idx_t_idx_c106, idx_t_idx_c107, idx_t_idx_c108, idx_t_idx_c109, idx_t_idx_c110, idx_t_idx_c111, idx_t_idx_c112, idx_t_idx_c113, idx_t_idx_c114, idx_t_idx_c115, idx_t_idx_c116, idx_t_idx_c117, idx_t_idx_c118, idx_t_idx_c119, idx_t_idx_c120, idx_t_idx_c121, idx_t_idx_c122, idx_t_idx_c123, idx_t_idx_c124, idx_t_idx_c125, idx_t_idx_c126, idx_t_idx_c127, idx_t_idx_c128, idx_t_idx_c129) where c120 = 1; 
 | 
						|
 | 
						|
====================================================
 | 
						|
|ID|OPERATOR  |NAME                 |EST. ROWS|COST|
 | 
						|
----------------------------------------------------
 | 
						|
|0 |TABLE SCAN|t_idx(idx_t_idx_c120)|100      |54  |
 | 
						|
====================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t_idx.c120]), filter(nil), 
 | 
						|
      access([t_idx.c120]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t_idx"@"SEL$1" "idx_t_idx_c120")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 108(end)  ************** 
 | 
						|
 | 
						|
***************   Case 109   ***************
 | 
						|
 | 
						|
SQL: select c120 from t_idx use index (idx_t_idx_c2, idx_t_idx_c2, idx_t_idx_c3, idx_t_idx_c4, idx_t_idx_c5, idx_t_idx_c6, idx_t_idx_c7, idx_t_idx_c8, idx_t_idx_c9, idx_t_idx_c10, idx_t_idx_c11, idx_t_idx_c12, idx_t_idx_c13, idx_t_idx_c14, idx_t_idx_c15, idx_t_idx_c16, idx_t_idx_c17, idx_t_idx_c18, idx_t_idx_c19, idx_t_idx_c20, idx_t_idx_c21, idx_t_idx_c22, idx_t_idx_c23, idx_t_idx_c24, idx_t_idx_c25, idx_t_idx_c26, idx_t_idx_c27, idx_t_idx_c28, idx_t_idx_c29, idx_t_idx_c30, idx_t_idx_c31, idx_t_idx_c32, idx_t_idx_c33, idx_t_idx_c34, idx_t_idx_c35, idx_t_idx_c36, idx_t_idx_c37, idx_t_idx_c38, idx_t_idx_c39, idx_t_idx_c40, idx_t_idx_c41, idx_t_idx_c42, idx_t_idx_c43, idx_t_idx_c44, idx_t_idx_c45, idx_t_idx_c46, idx_t_idx_c47, idx_t_idx_c48, idx_t_idx_c49, idx_t_idx_c50, idx_t_idx_c51, idx_t_idx_c52, idx_t_idx_c53, idx_t_idx_c54, idx_t_idx_c55, idx_t_idx_c56, idx_t_idx_c57, idx_t_idx_c58, idx_t_idx_c59, idx_t_idx_c60, idx_t_idx_c61, idx_t_idx_c62, idx_t_idx_c63, idx_t_idx_c64, idx_t_idx_c65, idx_t_idx_c66, idx_t_idx_c67, idx_t_idx_c68, idx_t_idx_c69, idx_t_idx_c70, idx_t_idx_c71, idx_t_idx_c72, idx_t_idx_c73, idx_t_idx_c74, idx_t_idx_c75, idx_t_idx_c76, idx_t_idx_c77, idx_t_idx_c78, idx_t_idx_c79, idx_t_idx_c80, idx_t_idx_c81, idx_t_idx_c82, idx_t_idx_c83, idx_t_idx_c84, idx_t_idx_c85, idx_t_idx_c86, idx_t_idx_c87, idx_t_idx_c88, idx_t_idx_c89, idx_t_idx_c90, idx_t_idx_c91, idx_t_idx_c92, idx_t_idx_c93, idx_t_idx_c94, idx_t_idx_c95, idx_t_idx_c96, idx_t_idx_c97, idx_t_idx_c98, idx_t_idx_c99, idx_t_idx_c100, idx_t_idx_c101, idx_t_idx_c102, idx_t_idx_c103, idx_t_idx_c104, idx_t_idx_c105, idx_t_idx_c106, idx_t_idx_c107, idx_t_idx_c108, idx_t_idx_c109, idx_t_idx_c110, idx_t_idx_c111, idx_t_idx_c112, idx_t_idx_c113, idx_t_idx_c114, idx_t_idx_c115, idx_t_idx_c116, idx_t_idx_c117, idx_t_idx_c118, idx_t_idx_c119, idx_t_idx_c120, idx_t_idx_c121, idx_t_idx_c122, idx_t_idx_c123, idx_t_idx_c124, idx_t_idx_c125, idx_t_idx_c126, idx_t_idx_c127, idx_t_idx_c128, idx_t_idx_c129) where c120 = 1; 
 | 
						|
 | 
						|
====================================================
 | 
						|
|ID|OPERATOR  |NAME                 |EST. ROWS|COST|
 | 
						|
----------------------------------------------------
 | 
						|
|0 |TABLE SCAN|t_idx(idx_t_idx_c120)|100      |54  |
 | 
						|
====================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t_idx.c120]), filter(nil), 
 | 
						|
      access([t_idx.c120]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.t_idx"@"SEL$1" "idx_t_idx_c120")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 109(end)  ************** 
 | 
						|
 | 
						|
***************   Case 110   ***************
 | 
						|
 | 
						|
SQL: select /*+use_plan_cache(none)*/ * from hint.t1; 
 | 
						|
 | 
						|
===================================
 | 
						|
|ID|OPERATOR  |NAME|EST. ROWS|COST|
 | 
						|
-----------------------------------
 | 
						|
|0 |TABLE SCAN|t1  |100      |90  |
 | 
						|
===================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      USE_PLAN_CACHE("NONE")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 110(end)  ************** 
 | 
						|
 | 
						|
***************   Case 111   ***************
 | 
						|
 | 
						|
SQL: select /*+use_plan_cache(meaningless)*/ * from hint.t1; 
 | 
						|
 | 
						|
===================================
 | 
						|
|ID|OPERATOR  |NAME|EST. ROWS|COST|
 | 
						|
-----------------------------------
 | 
						|
|0 |TABLE SCAN|t1  |100      |90  |
 | 
						|
===================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 111(end)  ************** 
 | 
						|
 | 
						|
***************   Case 112   ***************
 | 
						|
 | 
						|
SQL: select /*+ index(t1 primary) */ * from hint.t1 order by a desc; 
 | 
						|
 | 
						|
==========================================
 | 
						|
|ID|OPERATOR  |NAME       |EST. ROWS|COST|
 | 
						|
------------------------------------------
 | 
						|
|0 |TABLE SCAN|t1(Reverse)|100      |90  |
 | 
						|
==========================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.a], [t1.b]), filter(nil), 
 | 
						|
      access([t1.a], [t1.b]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$1" "hint.t1"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 112(end)  ************** 
 | 
						|
 | 
						|
***************   Case 113   ***************
 | 
						|
 | 
						|
SQL: select min(a) from z1 za where za.a in (select a from z1); 
 | 
						|
 | 
						|
=========================================
 | 
						|
|ID|OPERATOR       |NAME |EST. ROWS|COST|
 | 
						|
-----------------------------------------
 | 
						|
|0 |SCALAR GROUP BY|     |1        |37  |
 | 
						|
|1 | SUBPLAN SCAN  |VIEW2|1        |37  |
 | 
						|
|2 |  TABLE SCAN   |za   |1        |36  |
 | 
						|
=========================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([T_FUN_MIN(VIEW2.a)]), filter(nil), 
 | 
						|
      group(nil), agg_func([T_FUN_MIN(VIEW2.a)])
 | 
						|
  1 - output([VIEW2.a]), filter(nil), 
 | 
						|
      access([VIEW2.a])
 | 
						|
  2 - output([za.a]), filter(nil), 
 | 
						|
      access([za.a]), partitions(p0), 
 | 
						|
      limit(1), offset(nil)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$3" "opt.za"@"SEL$3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 113(end)  ************** 
 | 
						|
 | 
						|
***************   Case 114   ***************
 | 
						|
 | 
						|
SQL: select /*+ INDEX(@SEL$3 opt.z1@SEL$2 z1_b)*/ min(a) from z1 za where za.a in (select a from z1); 
 | 
						|
 | 
						|
=========================================
 | 
						|
|ID|OPERATOR       |NAME |EST. ROWS|COST|
 | 
						|
-----------------------------------------
 | 
						|
|0 |SCALAR GROUP BY|     |1        |37  |
 | 
						|
|1 | SUBPLAN SCAN  |VIEW2|1        |37  |
 | 
						|
|2 |  TABLE SCAN   |za   |1        |36  |
 | 
						|
=========================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([T_FUN_MIN(VIEW2.a)]), filter(nil), 
 | 
						|
      group(nil), agg_func([T_FUN_MIN(VIEW2.a)])
 | 
						|
  1 - output([VIEW2.a]), filter(nil), 
 | 
						|
      access([VIEW2.a])
 | 
						|
  2 - output([za.a]), filter(nil), 
 | 
						|
      access([za.a]), partitions(p0), 
 | 
						|
      limit(1), offset(nil)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$3" "opt.za"@"SEL$3")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 114(end)  ************** 
 | 
						|
 | 
						|
***************   Case 115   ***************
 | 
						|
 | 
						|
SQL: select /*+index(z1 z1_b)*/ * from z1 ignore key(a); 
 | 
						|
 | 
						|
=======================================
 | 
						|
|ID|OPERATOR  |NAME    |EST. ROWS|COST|
 | 
						|
---------------------------------------
 | 
						|
|0 |TABLE SCAN|z1(z1_b)|100      |621 |
 | 
						|
=======================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([z1.a], [z1.b], [z1.c], [z1.d]), filter(nil), 
 | 
						|
      access([z1.a], [z1.b], [z1.c], [z1.d]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.z1"@"SEL$1" "z1_b")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 115(end)  ************** 
 | 
						|
 | 
						|
***************   Case 116   ***************
 | 
						|
 | 
						|
SQL: select /*+index(z1 z1_b)*/ * from z1 ignore key(z1_b); 
 | 
						|
 | 
						|
=======================================
 | 
						|
|ID|OPERATOR  |NAME    |EST. ROWS|COST|
 | 
						|
---------------------------------------
 | 
						|
|0 |TABLE SCAN|z1(z1_b)|100      |621 |
 | 
						|
=======================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([z1.a], [z1.b], [z1.c], [z1.d]), filter(nil), 
 | 
						|
      access([z1.a], [z1.b], [z1.c], [z1.d]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      INDEX(@"SEL$1" "opt.z1"@"SEL$1" "z1_b")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 116(end)  ************** 
 | 
						|
 | 
						|
***************   Case 117   ***************
 | 
						|
 | 
						|
SQL: select /*+use_hash(t1,t2) no_use_hash_aggregation*/* from t1 left join t2 using(c2) group by t1.c2 order by t1.c2; 
 | 
						|
 | 
						|
============================================================
 | 
						|
|ID|OPERATOR                  |NAME         |EST. ROWS|COST|
 | 
						|
------------------------------------------------------------
 | 
						|
|0 |MERGE GROUP BY            |             |101      |6491|
 | 
						|
|1 | SORT                     |             |1421     |6176|
 | 
						|
|2 |  HASH OUTER JOIN         |             |1421     |2259|
 | 
						|
|3 |   PX COORDINATOR         |             |500      |389 |
 | 
						|
|4 |    EXCHANGE OUT DISTR    |:EX10000     |500      |342 |
 | 
						|
|5 |     PX PARTITION ITERATOR|             |500      |342 |
 | 
						|
|6 |      TABLE SCAN          |t1(idx_t1_c2)|500      |342 |
 | 
						|
|7 |   PX COORDINATOR         |             |300      |290 |
 | 
						|
|8 |    EXCHANGE OUT DISTR    |:EX20000     |300      |205 |
 | 
						|
|9 |     PX PARTITION ITERATOR|             |300      |205 |
 | 
						|
|10|      TABLE SCAN          |t2           |300      |205 |
 | 
						|
============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), 
 | 
						|
      group([t1.c2]), agg_func(nil)
 | 
						|
  1 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  2 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c2 = t2.c2]), other_conds(nil)
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  4 - 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)
 | 
						|
  8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  10 - 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
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$1")
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 117(end)  ************** 
 | 
						|
 | 
						|
***************   Case 118   ***************
 | 
						|
 | 
						|
SQL: select /*+use_hash(t1,t2) no_use_hash_aggregation*/* from t1 left join t2 using(c2) group by t1.c2 order by t2.c3 limit 3; 
 | 
						|
 | 
						|
==============================================================
 | 
						|
|ID|OPERATOR                    |NAME         |EST. ROWS|COST|
 | 
						|
--------------------------------------------------------------
 | 
						|
|0 |LIMIT                       |             |3        |6655|
 | 
						|
|1 | TOP-N SORT                 |             |3        |6655|
 | 
						|
|2 |  MERGE GROUP BY            |             |101      |6491|
 | 
						|
|3 |   SORT                     |             |1421     |6176|
 | 
						|
|4 |    HASH OUTER JOIN         |             |1421     |2259|
 | 
						|
|5 |     PX COORDINATOR         |             |500      |389 |
 | 
						|
|6 |      EXCHANGE OUT DISTR    |:EX10000     |500      |342 |
 | 
						|
|7 |       PX PARTITION ITERATOR|             |500      |342 |
 | 
						|
|8 |        TABLE SCAN          |t1(idx_t1_c2)|500      |342 |
 | 
						|
|9 |     PX COORDINATOR         |             |300      |290 |
 | 
						|
|10|      EXCHANGE OUT DISTR    |:EX20000     |300      |205 |
 | 
						|
|11|       PX PARTITION ITERATOR|             |300      |205 |
 | 
						|
|12|        TABLE SCAN          |t2           |300      |205 |
 | 
						|
==============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), limit(3), offset(nil)
 | 
						|
  1 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), sort_keys([t2.c3, ASC]), topn(3)
 | 
						|
  2 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), 
 | 
						|
      group([t1.c2]), agg_func(nil)
 | 
						|
  3 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  4 - output([t1.c2], [t1.c1], [t2.c1], [t2.c3]), filter(nil), 
 | 
						|
      equal_conds([t1.c2 = t2.c2]), other_conds(nil)
 | 
						|
  5 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  6 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  7 - output([t1.c1], [t1.c2]), filter(nil)
 | 
						|
  8 - output([t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      access([t1.c1], [t1.c2]), partitions(p[0-4])
 | 
						|
  9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | 
						|
  11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | 
						|
  12 - 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
 | 
						|
      NO_USE_HASH_AGGREGATION(@"SEL$1")
 | 
						|
      LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" ))
 | 
						|
      USE_HASH(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 118(end)  ************** 
 | 
						|
 | 
						|
***************   Case 119   ***************
 | 
						|
 | 
						|
SQL: select /*+ use_bnl(hint.t2, opt.t1)*/ * from hint.t2, opt.t1 where opt.t1.c2 = hint.t2.a; 
 | 
						|
 | 
						|
=============================================================
 | 
						|
|ID|OPERATOR                   |NAME         |EST. ROWS|COST|
 | 
						|
-------------------------------------------------------------
 | 
						|
|0 |MERGE JOIN                 |             |490      |1585|
 | 
						|
|1 | TABLE SCAN                |t2           |100      |90  |
 | 
						|
|2 | PX COORDINATOR MERGE SORT |             |500      |1122|
 | 
						|
|3 |  EXCHANGE OUT DISTR       |:EX10000     |500      |1074|
 | 
						|
|4 |   SORT                    |             |500      |1074|
 | 
						|
|5 |    PX PARTITION ITERATOR  |             |500      |342 |
 | 
						|
|6 |     TABLE SCAN            |t1(idx_t1_c2)|500      |342 |
 | 
						|
=============================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([t2.a], [t2.b], [t1.c1], [t1.c2]), filter(nil), 
 | 
						|
      equal_conds([t1.c2 = t2.a]), other_conds(nil)
 | 
						|
  1 - output([t2.a], [t2.b]), filter(nil), 
 | 
						|
      access([t2.a], [t2.b]), partitions(p0)
 | 
						|
  2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
 | 
						|
  3 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | 
						|
  4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
 | 
						|
  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])
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("hint.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | 
						|
      USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "hint.t2"@"SEL$1")
 | 
						|
      INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 119(end)  ************** 
 | 
						|
 | 
						|
***************   Case 120   ***************
 | 
						|
 | 
						|
SQL: select /*+ leading (b a) */ distinct * from hint_t1 a, hint_v1 b; 
 | 
						|
 | 
						|
========================================================
 | 
						|
|ID|OPERATOR                   |NAME   |EST. ROWS|COST |
 | 
						|
--------------------------------------------------------
 | 
						|
|0 |HASH DISTINCT              |       |10000    |18304|
 | 
						|
|1 | NESTED-LOOP JOIN CARTESIAN|       |10000    |7284 |
 | 
						|
|2 |  TABLE SCAN               |hint_t2|100      |95   |
 | 
						|
|3 |  MATERIAL                 |       |100      |113  |
 | 
						|
|4 |   TABLE SCAN              |a      |100      |95   |
 | 
						|
========================================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([a.c1], [hint_t2.c2]), filter(nil), 
 | 
						|
      distinct([a.c1], [hint_t2.c2])
 | 
						|
  1 - output([a.c1], [hint_t2.c2]), filter(nil), 
 | 
						|
      conds(nil), nl_params_(nil)
 | 
						|
  2 - output([hint_t2.c2]), filter(nil), 
 | 
						|
      access([hint_t2.c2]), partitions(p0)
 | 
						|
  3 - output([a.c1]), filter(nil)
 | 
						|
  4 - output([a.c1]), filter(nil), 
 | 
						|
      access([a.c1]), partitions(p0)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      LEADING(@"SEL$1" ("opt.hint_t2"@"SEL$1" "opt.a"@"SEL$1" ))
 | 
						|
      USE_NL(@"SEL$1" ("opt.a"@"SEL$1" ))
 | 
						|
      USE_NL_MATERIALIZATION(@"SEL$1" ("opt.a"@"SEL$1" ))
 | 
						|
      FULL(@"SEL$1" "opt.hint_t2"@"SEL$1")
 | 
						|
      FULL(@"SEL$1" "opt.a"@"SEL$1")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 120(end)  ************** 
 | 
						|
 | 
						|
***************   Case 121   ***************
 | 
						|
 | 
						|
SQL: select /*+read_consistency(weak)*/ * from (select distinct * from hint_t1) as a limit 5; 
 | 
						|
 | 
						|
==========================================
 | 
						|
|ID|OPERATOR      |NAME   |EST. ROWS|COST|
 | 
						|
------------------------------------------
 | 
						|
|0 |LIMIT         |       |5        |43  |
 | 
						|
|1 | HASH DISTINCT|       |5        |43  |
 | 
						|
|2 |  TABLE SCAN  |hint_t1|5        |37  |
 | 
						|
==========================================
 | 
						|
 | 
						|
Outputs & filters: 
 | 
						|
-------------------------------------
 | 
						|
  0 - output([hint_t1.c1]), filter(nil), limit(5), offset(nil)
 | 
						|
  1 - output([hint_t1.c1]), filter(nil), 
 | 
						|
      distinct([hint_t1.c1])
 | 
						|
  2 - output([hint_t1.c1]), filter(nil), 
 | 
						|
      access([hint_t1.c1]), partitions(p0), 
 | 
						|
      hint(read_consistency:2)
 | 
						|
 | 
						|
Outline Data:
 | 
						|
-------------------------------------
 | 
						|
  /*+
 | 
						|
      BEGIN_OUTLINE_DATA
 | 
						|
      FULL(@"SEL$2" "opt.hint_t1"@"SEL$2")
 | 
						|
      READ_CONSISTENCY("WEAK")
 | 
						|
      END_OUTLINE_DATA
 | 
						|
  */
 | 
						|
 | 
						|
*************** Case 121(end)  ************** 
 | 
						|
 |