[CP] 修复normal join的计划稳定性问题

This commit is contained in:
zzg19950727
2024-07-01 09:46:29 +00:00
committed by ob-robot
parent b6efa3a2ca
commit cc12fa9bb8
5 changed files with 518 additions and 533 deletions

View File

@ -345,38 +345,34 @@ Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |3 |3 |
|1 |├─NESTED-LOOP JOIN CARTESIAN | |3 |3 |
|2 |│ ├─TABLE FULL SCAN |t2 |3 |3 |
|3 |│ └─MATERIAL | |1 |3 |
|4 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|5 | └─SCALAR GROUP BY | |1 |3 |
|6 | └─TABLE FULL SCAN |t3 |1 |3 |
|7 |└─MATERIAL | |3 |3 |
|8 | └─TABLE FULL SCAN |t1 |3 |3 |
|0 |HASH JOIN | |3 |9 |
|1 |├─TABLE FULL SCAN |t2 |3 |3 |
|2 |└─NESTED-LOOP JOIN CARTESIAN | |3 |6 |
|3 | ├─SUBPLAN SCAN |VIEW1|1 |3 |
|4 | └─SCALAR GROUP BY | |1 |3 |
|5 | └─TABLE FULL SCAN |t3 |1 |3 |
|6 | └─TABLE FULL SCAN |t1 |3 |3 |
==============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), rowset=16
conds([cast(t1.a, DECIMAL_INT(34, 0)) + VIEW1.sum(b) = cast(t2.b, DECIMAL_INT(34, 0))]), nl_params_(nil), use_batch=false
1 - output([t2.a], [t2.b], [t2.c], [VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
2 - output([t2.a], [t2.b], [t2.c]), filter(nil), rowset=16
equal_conds([cast(t1.a, DECIMAL_INT(34, 0)) + VIEW1.sum(b) = cast(t2.b, DECIMAL_INT(34, 0))]), other_conds(nil)
1 - output([t2.a], [t2.b], [t2.c]), filter(nil), rowset=16
access([t2.a], [t2.b], [t2.c]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true
2 - output([t1.a], [t1.b], [t1.c], [VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
4 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
5 - output([T_FUN_SUM(T_FUN_SUM(t3.b))]), filter(nil), rowset=16
4 - output([T_FUN_SUM(T_FUN_SUM(t3.b))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t3.b))])
6 - output([T_FUN_SUM(t3.b)]), filter(nil), rowset=16
5 - output([T_FUN_SUM(t3.b)]), filter(nil), rowset=16
access([t3.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t3.b)])
7 - output([t1.a], [t1.b], [t1.c]), filter(nil), rowset=16
8 - output([t1.a], [t1.b], [t1.c]), filter(nil), rowset=16
6 - output([t1.a], [t1.b], [t1.c]), filter(nil), rowset=16
access([t1.a], [t1.b], [t1.c]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
@ -429,13 +425,12 @@ Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |HASH GROUP BY | |1 |3 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |3 |3 |
|2 | ├─TABLE FULL SCAN |t1 |3 |3 |
|3 | └─MATERIAL | |1 |3 |
|4 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|5 | └─SCALAR GROUP BY | |1 |3 |
|6 | └─TABLE FULL SCAN |t2 |3 |3 |
|0 |HASH GROUP BY | |1 |6 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |3 |6 |
|2 | ├─SUBPLAN SCAN |VIEW1|1 |3 |
|3 | │ └─SCALAR GROUP BY | |1 |3 |
|4 | └─TABLE FULL SCAN |t2 |3 |3 |
|5 | └─TABLE FULL SCAN |t1 |3 |3 |
==============================================================
Outputs & filters:
-------------------------------------
@ -443,20 +438,19 @@ Outputs & filters:
group([VIEW1.sum(b)]), agg_func([T_FUN_SUM(t1.a)])
1 - output([VIEW1.sum(b)], [t1.a]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
2 - output([t1.a]), filter(nil), rowset=16
access([t1.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
4 - output([VIEW1.sum(b)]), filter(nil), rowset=16
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
5 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter(nil), rowset=16
3 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
6 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
4 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
5 - output([t1.a]), filter(nil), rowset=16
access([t1.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp, sum(a) from t1 group by temp;
+------+--------+
| temp | sum(a) |
@ -468,13 +462,12 @@ Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |HASH DISTINCT | |1 |3 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|2 | ├─TABLE FULL SCAN |t1 |3 |3 |
|3 | └─MATERIAL | |1 |3 |
|4 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|5 | └─SCALAR GROUP BY | |1 |3 |
|6 | └─TABLE FULL SCAN |t2 |3 |3 |
|0 |HASH DISTINCT | |1 |6 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |6 |
|2 | ├─SUBPLAN SCAN |VIEW1|1 |3 |
|3 | │ └─SCALAR GROUP BY | |1 |3 |
|4 | └─TABLE FULL SCAN |t2 |3 |3 |
|5 | └─TABLE FULL SCAN |t1 |3 |3 |
==============================================================
Outputs & filters:
-------------------------------------
@ -482,20 +475,19 @@ Outputs & filters:
distinct([VIEW1.sum(b)])
1 - output([VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
2 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
4 - output([VIEW1.sum(b)]), filter(nil), rowset=16
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
5 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
3 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
6 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
4 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
5 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4;
+------+
| temp |
@ -507,13 +499,12 @@ Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |HASH DISTINCT | |1 |3 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|2 | ├─TABLE FULL SCAN |t1 |3 |3 |
|3 | └─MATERIAL | |1 |3 |
|4 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|5 | └─SCALAR GROUP BY | |1 |3 |
|6 | └─TABLE FULL SCAN |t2 |3 |3 |
|0 |HASH DISTINCT | |1 |6 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |6 |
|2 | ├─SUBPLAN SCAN |VIEW1|1 |3 |
|3 | │ └─SCALAR GROUP BY | |1 |3 |
|4 | └─TABLE FULL SCAN |t2 |3 |3 |
|5 | └─TABLE FULL SCAN |t1 |3 |3 |
==============================================================
Outputs & filters:
-------------------------------------
@ -521,20 +512,19 @@ Outputs & filters:
distinct([VIEW1.sum(b)])
1 - output([VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
2 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
4 - output([VIEW1.sum(b)]), filter(nil), rowset=16
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
5 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) < cast(4, DECIMAL_INT(33, 0))]), rowset=16
3 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) < cast(4, DECIMAL_INT(33, 0))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
6 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
4 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
5 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp from t1 group by temp having temp < 4;
+------+
| temp |
@ -545,54 +535,50 @@ Query Plan
==================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |3 |
|1 |├─SUBPLAN SCAN |VIEW2|1 |3 |
|2 |│ └─HASH DISTINCT | |1 |3 |
|3 |│ └─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|4 |│ ├─TABLE FULL SCAN |t1 |3 |3 |
|5 |│ └─MATERIAL | |1 |3 |
|6 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|7 | ─SCALAR GROUP BY | |1 |3 |
|8 | └─TABLE FULL SCAN |t2 |3 |3 |
|9 |└─MATERIAL | |1 |3 |
|10| └─SUBPLAN SCAN |VIEW3|1 |3 |
|11| └─SCALAR GROUP BY | |1 |3 |
|12| └─TABLE FULL SCAN |t3 |1 |3 |
|0 |NESTED-LOOP JOIN | |1 |9 |
|1 |├─SUBPLAN SCAN |VIEW3|1 |3 |
|2 |│ └─SCALAR GROUP BY | |1 |3 |
|3 |│ └─TABLE FULL SCAN |t3 |1 |3 |
|4 |└─SUBPLAN SCAN |VIEW2|1 |6 |
|5 | └─HASH DISTINCT | |1 |6 |
|6 | └─NESTED-LOOP JOIN CARTESIAN | |1 |6 |
|7 | ─SUBPLAN SCAN |VIEW1|1 |3 |
|8 | └─SCALAR GROUP BY | |1 |3 |
|9 | └─TABLE FULL SCAN |t2 |3 |3 |
|10| └─TABLE FULL SCAN |t1 |3 |3 |
==================================================================
Outputs & filters:
-------------------------------------
0 - output([VIEW2.VIEW1.sum(b)]), filter(nil), rowset=16
conds([VIEW2.VIEW1.sum(b) > VIEW3.sum(b)]), nl_params_(nil), use_batch=false
1 - output([VIEW2.VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW2.VIEW1.sum(b)])
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
distinct([VIEW1.sum(b)])
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
4 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
5 - output([VIEW1.sum(b)]), filter(nil), rowset=16
6 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
7 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
8 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
9 - output([VIEW3.sum(b)]), filter(nil), rowset=16
10 - output([VIEW3.sum(b)]), filter(nil), rowset=16
1 - output([VIEW3.sum(b)]), filter(nil), rowset=16
access([VIEW3.sum(b)])
11 - output([T_FUN_SUM(T_FUN_SUM(t3.b))]), filter(nil), rowset=16
2 - output([T_FUN_SUM(T_FUN_SUM(t3.b))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t3.b))])
12 - output([T_FUN_SUM(t3.b)]), filter(nil), rowset=16
3 - output([T_FUN_SUM(t3.b)]), filter(nil), rowset=16
access([t3.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t3.b)])
4 - output([VIEW2.VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW2.VIEW1.sum(b)])
5 - output([VIEW1.sum(b)]), filter(nil), rowset=16
distinct([VIEW1.sum(b)])
6 - output([VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
7 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
8 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
9 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
10 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4 and temp > (select sum(b) from t3);
+------+
| temp |
@ -604,13 +590,12 @@ Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |HASH DISTINCT | |1 |3 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|2 | ├─TABLE FULL SCAN |t1 |3 |3 |
|3 | └─MATERIAL | |1 |3 |
|4 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|5 | └─SCALAR GROUP BY | |1 |3 |
|6 | └─TABLE FULL SCAN |t2 |3 |3 |
|0 |HASH DISTINCT | |1 |6 |
|1 |└─NESTED-LOOP JOIN CARTESIAN | |1 |6 |
|2 | ├─SUBPLAN SCAN |VIEW1|1 |3 |
|3 | │ └─SCALAR GROUP BY | |1 |3 |
|4 | └─TABLE FULL SCAN |t2 |3 |3 |
|5 | └─TABLE FULL SCAN |t1 |3 |3 |
==============================================================
Outputs & filters:
-------------------------------------
@ -618,20 +603,19 @@ Outputs & filters:
distinct([VIEW1.sum(b)])
1 - output([VIEW1.sum(b)]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
2 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
4 - output([VIEW1.sum(b)]), filter(nil), rowset=16
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
5 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))], [T_FUN_SUM(T_FUN_SUM(t2.b)) > T_FUN_SUM(T_FUN_SUM(t2.b))]), rowset=16
3 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))], [T_FUN_SUM(T_FUN_SUM(t2.b)) > T_FUN_SUM(T_FUN_SUM(t2.b))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
6 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
4 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
5 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4 and temp > (select sum(b) from t2);
+------+
| temp |
@ -644,31 +628,29 @@ Query Plan
============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|1 |├─TABLE FULL SCAN |t1 |3 |3 |
|2 |└─MATERIAL | |1 |3 |
|3 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|4 | └─SCALAR GROUP BY | |1 |3 |
|5 | └─TABLE FULL SCAN |t2 |3 |3 |
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |6 |
|1 |├─SUBPLAN SCAN |VIEW1|1 |3 |
|2 |│ └─SCALAR GROUP BY | |1 |3 |
|3 | └─TABLE FULL SCAN |t2 |3 |3 |
|4 |└─TABLE FULL SCAN |t1 |3 |3 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([VIEW1.sum(b)], [t1.a]), filter(nil), rowset=16
conds(nil), nl_params_(nil), use_batch=false
1 - output([t1.a]), filter(nil), rowset=16
access([t1.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
2 - output([VIEW1.sum(b)]), filter(nil), rowset=16
3 - output([VIEW1.sum(b)]), filter(nil), rowset=16
1 - output([VIEW1.sum(b)]), filter(nil), rowset=16
access([VIEW1.sum(b)])
4 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
2 - output([T_FUN_SUM(T_FUN_SUM(t2.b))]), filter([T_FUN_SUM(T_FUN_SUM(t2.b)) > cast(4, DECIMAL_INT(33, 0))]), rowset=16
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t2.b))])
5 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
3 - output([T_FUN_SUM(t2.b)]), filter(nil), rowset=16
access([t2.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.a]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_SUM(t2.b)])
4 - output([t1.a]), filter(nil), rowset=16
access([t1.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.a]), range(MIN ; MAX)always true
select (select sum(b) from t2) as temp, a from t1 group by a having temp > 4;
+------+---+
| temp | a |
@ -1413,43 +1395,42 @@ FROM
t2
WHERE v1.s_c2 >= t2.c2 and v1.c1 = t2.c1;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |3 |
|1 |├─TABLE FULL SCAN |t2 |1 |3 |
|2 |└─MATERIAL | |1 |7 |
|3 | └─SUBPLAN SCAN |v1 |1 |7 |
|4 | └─SUBPLAN FILTER | |1 |7 |
|5 | ─TABLE FULL SCAN|t1 |1 |3 |
|6 | ├─TABLE FULL SCAN|t3 |1 |3 |
|7 | └─TABLE FULL SCAN|t3 |1 |3 |
=======================================================
====================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |28 |
|1 |├─SUBPLAN SCAN |v1 |1 |7 |
|2 |│ └─SUBPLAN FILTER | |1 |7 |
|3 | ├─TABLE FULL SCAN |t1 |1 |3 |
|4 | ├─TABLE FULL SCAN |t3 |1 |3 |
|5 | ─TABLE FULL SCAN |t3 |1 |3 |
|6 |└─DISTRIBUTED TABLE RANGE SCAN|t2(idx_c1)|1 |20 |
====================================================================
Outputs & filters:
-------------------------------------
0 - output([v1.c1], [v1.s_c1], [v1.s_c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds([v1.s_c2 >= t2.c2], [v1.c1 = t2.c1]), nl_params_(nil), use_batch=false
1 - output([t2.c2], [t2.c1]), filter(nil), rowset=16
access([t2.c2], [t2.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.__pk_increment]), range(MIN ; MAX)always true
2 - output([v1.c1], [v1.s_c1], [v1.s_c2]), filter(nil), rowset=16
3 - output([v1.s_c2], [v1.c1], [v1.s_c1]), filter(nil), rowset=16
conds(nil), nl_params_([v1.s_c2(:2)], [v1.c1(:3)]), use_batch=true
1 - output([v1.s_c2], [v1.c1], [v1.s_c1]), filter(nil), rowset=16
access([v1.s_c2], [v1.c1], [v1.s_c1])
4 - output([t1.c1], [:0], [:1]), filter(nil), rowset=16
2 - output([t1.c1], [:0], [:1]), filter(nil), rowset=16
exec_params_(nil), onetime_exprs_([subquery(1)(:0)], [subquery(2)(:1)]), init_plan_idxs_(nil), use_batch=false
5 - output([t1.c1]), filter(nil), rowset=16
3 - output([t1.c1]), filter(nil), rowset=16
access([t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
6 - output([t3.c1]), filter(nil), rowset=16
4 - output([t3.c1]), filter(nil), rowset=16
access([t3.c1]), partitions(p0)
limit(1), offset(nil), is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
7 - output([t3.c2]), filter(nil), rowset=16
5 - output([t3.c2]), filter(nil), rowset=16
access([t3.c2]), partitions(p0)
limit(1), offset(nil), is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
6 - output([t2.c2], [t2.c1]), filter([:2 >= t2.c2]), rowset=16
access([GROUP_ID], [t2.__pk_increment], [t2.c2], [t2.c1]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([t2.c1], [t2.__pk_increment]), range(MIN ; MAX),
range_cond([:3 = t2.c1])
SELECT /*+use_nl(t2 v1)*/ *
FROM
(SELECT /*+no_merge*, no_rewrite, full(t1)*/