459 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			459 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ***************   Case 1   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1;
 | |
| 
 | |
| =====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST |
 | |
| -------------------------------------
 | |
| |0 |HASH JOIN  |    |14250    |24667|
 | |
| |1 | TABLE SCAN|t1  |10000    |3818 |
 | |
| |2 | TABLE SCAN|t2  |2000     |785  |
 | |
| =====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(MIN ; MAX)always true
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(MIN ; MAX)always true
 | |
| 
 | |
| *************** Case 1(end)  ************** 
 | |
| 
 | |
| ***************   Case 2   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 = 1;
 | |
| 
 | |
| ====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST|
 | |
| ------------------------------------
 | |
| |0 |HASH JOIN  |    |2        |1496|
 | |
| |1 | TABLE GET |t1  |1        |52  |
 | |
| |2 | TABLE SCAN|t2  |2000     |785 |
 | |
| ====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range[1 ; 1], 
 | |
|       range_cond([t1.c1 = 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(MIN ; MAX)always true
 | |
| 
 | |
| *************** Case 2(end)  ************** 
 | |
| 
 | |
| ***************   Case 3   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 > 1;
 | |
| 
 | |
| ====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST|
 | |
| ------------------------------------
 | |
| |0 |HASH JOIN  |    |144      |1688|
 | |
| |1 | TABLE SCAN|t1  |100      |52  |
 | |
| |2 | TABLE SCAN|t2  |2000     |785 |
 | |
| ====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(1 ; MAX), 
 | |
|       range_cond([t1.c1 > 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(MIN ; MAX)always true
 | |
| 
 | |
| *************** Case 3(end)  ************** 
 | |
| 
 | |
| ***************   Case 4   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t2.c1 = 1;
 | |
| 
 | |
| =====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST |
 | |
| -------------------------------------
 | |
| |0 |HASH JOIN  |    |10       |14832|
 | |
| |1 | TABLE SCAN|t1  |10000    |3818 |
 | |
| |2 | TABLE GET |t2  |1        |52   |
 | |
| =====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(MIN ; MAX)always true
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range[1 ; 1], 
 | |
|       range_cond([t2.c1 = 1])
 | |
| 
 | |
| *************** Case 4(end)  ************** 
 | |
| 
 | |
| ***************   Case 5   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t2.c1 > 1;
 | |
| 
 | |
| =====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST |
 | |
| -------------------------------------
 | |
| |0 |HASH JOIN  |    |927      |15408|
 | |
| |1 | TABLE SCAN|t1  |10000    |3818 |
 | |
| |2 | TABLE SCAN|t2  |100      |52   |
 | |
| =====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(MIN ; MAX)always true
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(1 ; MAX), 
 | |
|       range_cond([t2.c1 > 1])
 | |
| 
 | |
| *************** Case 5(end)  ************** 
 | |
| 
 | |
| ***************   Case 6   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 = 1 and t2.c1 = 1;
 | |
| 
 | |
| ===================================
 | |
| |ID|OPERATOR  |NAME|EST. ROWS|COST|
 | |
| -----------------------------------
 | |
| |0 |HASH JOIN |    |1        |106 |
 | |
| |1 | TABLE GET|t1  |1        |52  |
 | |
| |2 | TABLE GET|t2  |1        |52  |
 | |
| ===================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range[1 ; 1], 
 | |
|       range_cond([t1.c1 = 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range[1 ; 1], 
 | |
|       range_cond([t2.c1 = 1])
 | |
| 
 | |
| *************** Case 6(end)  ************** 
 | |
| 
 | |
| ***************   Case 7   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 > 1 and t2.c1 = 1;
 | |
| 
 | |
| ====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST|
 | |
| ------------------------------------
 | |
| |0 |HASH JOIN  |    |1        |215 |
 | |
| |1 | TABLE SCAN|t1  |100      |52  |
 | |
| |2 | TABLE GET |t2  |1        |52  |
 | |
| ====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(1 ; MAX), 
 | |
|       range_cond([t1.c1 > 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range[1 ; 1], 
 | |
|       range_cond([t2.c1 = 1])
 | |
| 
 | |
| *************** Case 7(end)  ************** 
 | |
| 
 | |
| ***************   Case 8   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 = 1 and t2.c1 > 1;
 | |
| 
 | |
| ====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST|
 | |
| ------------------------------------
 | |
| |0 |HASH JOIN  |    |1        |139 |
 | |
| |1 | TABLE GET |t1  |1        |52  |
 | |
| |2 | TABLE SCAN|t2  |100      |52  |
 | |
| ====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range[1 ; 1], 
 | |
|       range_cond([t1.c1 = 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(1 ; MAX), 
 | |
|       range_cond([t2.c1 > 1])
 | |
| 
 | |
| *************** Case 8(end)  ************** 
 | |
| 
 | |
| ***************   Case 9   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(t1, t2) USE_HASH(t1, t2) */ t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c1 > 1 and t2.c1 > 1;
 | |
| 
 | |
| ====================================
 | |
| |ID|OPERATOR   |NAME|EST. ROWS|COST|
 | |
| ------------------------------------
 | |
| |0 |HASH JOIN  |    |96       |303 |
 | |
| |1 | TABLE SCAN|t1  |100      |52  |
 | |
| |2 | TABLE SCAN|t2  |100      |52  |
 | |
| ====================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t2.c1]), other_conds(nil)
 | |
|   1 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t1.c1]), range(1 ; MAX), 
 | |
|       range_cond([t1.c1 > 1])
 | |
|   2 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([t2.c1]), range(1 ; MAX), 
 | |
|       range_cond([t2.c1 > 1])
 | |
| 
 | |
| *************** Case 9(end)  ************** 
 | |
| 
 | |
| ***************   Case 10   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(a, b, c) USE_HASH(a, b, c) */ c.c1 from t1 a, t1 b, t1 c where b.c1 = c.c1;
 | |
| 
 | |
| =========================================================
 | |
| |ID|OPERATOR                   |NAME|EST. ROWS|COST     |
 | |
| ---------------------------------------------------------
 | |
| |0 |HASH JOIN                  |    |949995250|762142938|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|    |100000000|70773404 |
 | |
| |2 |  TABLE SCAN               |a   |10000    |3818     |
 | |
| |3 |  MATERIAL                 |    |10000    |5655     |
 | |
| |4 |   TABLE SCAN              |b   |10000    |3818     |
 | |
| |5 | TABLE SCAN                |c   |10000    |3818     |
 | |
| =========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([c.c1]), filter(nil), 
 | |
|       equal_conds([b.c1 = c.c1]), other_conds(nil)
 | |
|   1 - output([b.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   2 - output([a.c1]), filter(nil), 
 | |
|       access([a.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([a.c1]), range(MIN ; MAX)always true
 | |
|   3 - output([b.c1]), filter(nil)
 | |
|   4 - output([b.c1]), filter(nil), 
 | |
|       access([b.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([b.c1]), range(MIN ; MAX)always true
 | |
|   5 - output([c.c1]), filter(nil), 
 | |
|       access([c.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([c.c1]), range(MIN ; MAX)always true
 | |
| 
 | |
| *************** Case 10(end)  ************** 
 | |
| 
 | |
| ***************   Case 11   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(a, b, c) USE_HASH(a, b, c) */ c.c1 from t1 a, t1 b, t1 c where b.c1 = c.c1 and c.c1 = 1;
 | |
| 
 | |
| =========================================================
 | |
| |ID|OPERATOR                   |NAME|EST. ROWS|COST     |
 | |
| ---------------------------------------------------------
 | |
| |0 |HASH JOIN                  |    |100000   |198770318|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|    |100000000|70773404 |
 | |
| |2 |  TABLE SCAN               |a   |10000    |3818     |
 | |
| |3 |  MATERIAL                 |    |10000    |5655     |
 | |
| |4 |   TABLE SCAN              |b   |10000    |3818     |
 | |
| |5 | TABLE GET                 |c   |1        |52       |
 | |
| =========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([c.c1]), filter(nil), 
 | |
|       equal_conds([b.c1 = c.c1]), other_conds(nil)
 | |
|   1 - output([b.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   2 - output([a.c1]), filter(nil), 
 | |
|       access([a.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([a.c1]), range(MIN ; MAX)always true
 | |
|   3 - output([b.c1]), filter(nil)
 | |
|   4 - output([b.c1]), filter(nil), 
 | |
|       access([b.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([b.c1]), range(MIN ; MAX)always true
 | |
|   5 - output([c.c1]), filter(nil), 
 | |
|       access([c.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([c.c1]), range[1 ; 1], 
 | |
|       range_cond([c.c1 = 1])
 | |
| 
 | |
| *************** Case 11(end)  ************** 
 | |
| 
 | |
| ***************   Case 12   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(a, b, c) USE_HASH(a, b, c) */ c.c1 from t1 a, t1 b, t1 c where b.c1 = c.c1 and c.c1 > 1;
 | |
| 
 | |
| =========================================================
 | |
| |ID|OPERATOR                   |NAME|EST. ROWS|COST     |
 | |
| ---------------------------------------------------------
 | |
| |0 |HASH JOIN                  |    |9561745  |204381939|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|    |100000000|70773404 |
 | |
| |2 |  TABLE SCAN               |a   |10000    |3818     |
 | |
| |3 |  MATERIAL                 |    |10000    |5655     |
 | |
| |4 |   TABLE SCAN              |b   |10000    |3818     |
 | |
| |5 | TABLE SCAN                |c   |100      |52       |
 | |
| =========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([c.c1]), filter(nil), 
 | |
|       equal_conds([b.c1 = c.c1]), other_conds(nil)
 | |
|   1 - output([b.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   2 - output([a.c1]), filter(nil), 
 | |
|       access([a.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([a.c1]), range(MIN ; MAX)always true
 | |
|   3 - output([b.c1]), filter(nil)
 | |
|   4 - output([b.c1]), filter(nil), 
 | |
|       access([b.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([b.c1]), range(MIN ; MAX)always true
 | |
|   5 - output([c.c1]), filter(nil), 
 | |
|       access([c.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([c.c1]), range(1 ; MAX), 
 | |
|       range_cond([c.c1 > 1])
 | |
| 
 | |
| *************** Case 12(end)  ************** 
 | |
| 
 | |
| ***************   Case 13   ***************
 | |
| min = 1001, max = 10000, ndv = 1000, null_num = 500
 | |
| t1 row count = 10000, t2 row count = 2000
 | |
| t1 not null frac is (10000-500)/10000 = 0.95
 | |
| t2 not null frac is (2000-500)/2000 = 0.75
 | |
| 
 | |
| SQL: select /*+ LEADING(a, b, c) USE_HASH(a, b, c) */ c.c1 from t1 a, t1 b, t1 c where b.c1 = c.c1 and a.c1 = 1 and b.c1 = 1 and c.c1 = 1;
 | |
| 
 | |
| ====================================================
 | |
| |ID|OPERATOR                   |NAME|EST. ROWS|COST|
 | |
| ----------------------------------------------------
 | |
| |0 |HASH JOIN                  |    |1        |159 |
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|    |1        |105 |
 | |
| |2 |  TABLE GET                |a   |1        |52  |
 | |
| |3 |  TABLE GET                |b   |1        |52  |
 | |
| |4 | TABLE GET                 |c   |1        |52  |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([c.c1]), filter(nil), 
 | |
|       equal_conds([b.c1 = c.c1]), other_conds(nil)
 | |
|   1 - output([b.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   2 - output([a.c1]), filter(nil), 
 | |
|       access([a.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([a.c1]), range[1 ; 1], 
 | |
|       range_cond([a.c1 = 1])
 | |
|   3 - output([b.c1]), filter(nil), 
 | |
|       access([b.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([b.c1]), range[1 ; 1], 
 | |
|       range_cond([b.c1 = 1])
 | |
|   4 - output([c.c1]), filter(nil), 
 | |
|       access([c.c1]), partitions(p0), 
 | |
|       is_index_back=false, 
 | |
|       range_key([c.c1]), range[1 ; 1], 
 | |
|       range_cond([c.c1 = 1])
 | |
| 
 | |
| *************** Case 13(end)  ************** 
 | |
| 
 | 
