[FEAT MERGE]logical plan move to plan cache module add feedback into to plan

This commit is contained in:
zzg19950727
2023-04-18 11:41:58 +00:00
committed by ob-robot
parent e392fc2a37
commit 8daff3e658
122 changed files with 45692 additions and 43707 deletions

View File

@ -578,6 +578,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr
12356 __all_virtual_rls_attribute 2 201001 1
12357 __all_virtual_rls_attribute_history 2 201001 1
12358 __all_virtual_tenant_mysql_sys_agent 2 201001 1
12359 __all_virtual_sql_plan 2 201001 1
12362 __all_virtual_core_table 2 201001 1
12363 __all_virtual_malloc_sample_info 2 201001 1
12364 __all_virtual_ls_arb_replica_task 2 201001 1
@ -852,6 +853,8 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr
21338 DBA_OB_DATABASE_PRIVILEGE 1 201001 1
21339 CDB_OB_DATABASE_PRIVILEGE 1 201001 1
21340 DBA_OB_USER_DEFINED_RULES 1 201001 1
21341 GV$OB_SQL_PLAN 1 201001 1
21342 V$OB_SQL_PLAN 1 201001 1
21345 DBA_OB_CLUSTER_EVENT_HISTORY 1 201001 1
21346 PARAMETERS 1 201002 1
21347 TABLE_PRIVILEGES 1 201002 1

View File

@ -17,13 +17,13 @@ insert/*trace*/ into t1(id) values (107);
insert/*trace*/ into t2(id) values (107),(75),(1000);
EXPLAIN select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -47,13 +47,13 @@ select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200;
EXPLAIN select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200 and t1.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -77,13 +77,13 @@ select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200 and t1.id<200;
EXPLAIN select a.id , b.id from t1 a, t2 b where a.id = b.id and a.id>200 and a.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|a |1 |2 |
|2 | TABLE SCAN|b |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|a |1 |2 |
|2 |└─TABLE RANGE SCAN|b |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
@ -111,14 +111,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |3 |4 |
|1 | TABLE SCAN |b |3 |2 |
|2 | MATERIAL | |1 |2 |
|3 | TABLE SCAN |a |1 |2 |
|1 |├─TABLE FULL SCAN |b |3 |2 |
|2 |└─MATERIAL | |1 |2 |
|3 | └─TABLE RANGE SCAN |a |1 |2 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([b.id]), filter(nil), rowset=256
access([b.id]), partitions(p0)
is_index_back=false, is_global_index=false,

View File

@ -19,13 +19,13 @@ insert/*trace*/ into t2(id) values (107),(75),(1000);
EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -49,13 +49,13 @@ select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200;
EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200 and t1.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -79,13 +79,13 @@ select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200 and t1.id<200
EXPLAIN select a.id , b.id from t1 a join t2 b on a.id = b.id and a.id>200 and a.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|a |1 |2 |
|2 | TABLE SCAN|b |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|a |1 |2 |
|2 |└─TABLE RANGE SCAN|b |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
@ -113,14 +113,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |3 |4 |
|1 | TABLE SCAN |b |3 |2 |
|2 | MATERIAL | |1 |2 |
|3 | TABLE SCAN |a |1 |2 |
|1 |├─TABLE FULL SCAN |b |3 |2 |
|2 |└─MATERIAL | |1 |2 |
|3 | └─TABLE RANGE SCAN |a |1 |2 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([b.id]), filter(nil), rowset=256
access([b.id]), partitions(p0)
is_index_back=false, is_global_index=false,

View File

@ -19,13 +19,13 @@ insert/*trace*/ into t2(id) values (107),(75),(1000);
EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |1 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |1 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |1 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -49,13 +49,13 @@ select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200;
EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200 and t1.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |2 |4 |
|1 | TABLE SCAN|t1 |1 |2 |
|2 | TABLE SCAN|t2 |2 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |2 |4 |
|1 |├─TABLE RANGE SCAN|t1 |1 |2 |
|2 |└─TABLE RANGE SCAN|t2 |2 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.id], [t2.id]), filter(nil), rowset=256
@ -79,13 +79,13 @@ select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200 and t1.id<2
EXPLAIN select a.id , b.id from t1 a join t2 b on a.id = b.id where a.id>200 and a.id<200;
Query Plan
===========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------
|0 |MERGE JOIN | |2 |4 |
|1 | TABLE SCAN|a |1 |2 |
|2 | TABLE SCAN|b |2 |2 |
===========================================
==================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |MERGE JOIN | |2 |4 |
|1 |├─TABLE RANGE SCAN|a |1 |2 |
|2 |└─TABLE RANGE SCAN|b |2 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
@ -113,14 +113,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |3 |4 |
|1 | TABLE SCAN |b |3 |2 |
|2 | MATERIAL | |1 |2 |
|3 | TABLE SCAN |a |1 |2 |
|1 |├─TABLE FULL SCAN |b |3 |2 |
|2 |└─MATERIAL | |1 |2 |
|3 | └─TABLE RANGE SCAN |a |1 |2 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([a.id], [b.id]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([b.id]), filter(nil), rowset=256
access([b.id]), partitions(p0)
is_index_back=false, is_global_index=false,

View File

@ -21,12 +21,12 @@ index k4(c1,c2,c3,c4),
index k5(c1,c2,c3,c4,c5));
explain select count(*) from t1;
Query Plan
=================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY| |1 |2 |
|1 | TABLE SCAN |t1(k1)|1 |2 |
=================================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |SCALAR GROUP BY | |1 |2 |
|1 |└─TABLE FULL SCAN|t1(k1)|1 |2 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), rowset=256
@ -37,11 +37,11 @@ Outputs & filters:
range_key([t1.c1], [t1.__pk_increment]), range(MIN,MIN ; MAX,MAX)always true
explain select * from t1 where c1 = 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k1)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k1)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -51,11 +51,11 @@ Outputs & filters:
range_cond([t1.c1 = 1])
explain select * from t1 where c1 < 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k1)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k1)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -65,11 +65,11 @@ Outputs & filters:
range_cond([t1.c1 < 1])
explain select * from t1 where c1 > 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k1)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k1)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -79,11 +79,11 @@ Outputs & filters:
range_cond([t1.c1 > 1])
explain select * from t1 where c1 > 1 and c1 < 10;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k1)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k1)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -93,11 +93,11 @@ Outputs & filters:
range_cond([t1.c1 > 1], [t1.c1 < 10])
explain select * from t1 where c1 = 1 and c2 < 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k2)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k2)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -107,11 +107,11 @@ Outputs & filters:
range_cond([t1.c1 = 1], [t1.c2 < 1])
explain select * from t1 where c1 = 1 and c2 = 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k2)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k2)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -121,11 +121,11 @@ Outputs & filters:
range_cond([t1.c1 = 1], [t1.c2 = 1])
explain select * from t1 where c1 = 1 and c2 = 1 and c3 < 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k3)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k3)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -135,11 +135,11 @@ Outputs & filters:
range_cond([t1.c1 = 1], [t1.c2 = 1], [t1.c3 < 1])
explain select * from t1 where c1 = 1 and c2 = 1 and c3 = 1;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(k3)|1 |5 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(k3)|1 |5 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10]), filter(nil), rowset=256
@ -149,12 +149,12 @@ Outputs & filters:
range_cond([t1.c1 = 1], [t1.c2 = 1], [t1.c3 = 1])
explain select count(*) from t2;
Query Plan
=================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY| |1 |2 |
|1 | TABLE SCAN |t2(k1)|1 |2 |
=================================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |SCALAR GROUP BY | |1 |2 |
|1 |└─TABLE FULL SCAN|t2(k1)|1 |2 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), rowset=256
@ -165,11 +165,11 @@ Outputs & filters:
range_key([t2.c1], [t2.c6], [t2.c7]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select * from t2 where c1 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter(nil), rowset=256
@ -179,11 +179,11 @@ Outputs & filters:
range_cond([t2.c1 = 1])
explain select * from t2 where c1 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter(nil), rowset=256
@ -193,11 +193,11 @@ Outputs & filters:
range_cond([t2.c1 < 1])
explain select * from t2 where c1 > 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter(nil), rowset=256
@ -207,11 +207,11 @@ Outputs & filters:
range_cond([t2.c1 > 1])
explain select * from t2 where c1 > 1 and c1 < 10;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter(nil), rowset=256
@ -221,11 +221,11 @@ Outputs & filters:
range_cond([t2.c1 > 1], [t2.c1 < 10])
explain select * from t2 where c1 = 1 and c2 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter([t2.c2 < 1]), rowset=256
@ -235,11 +235,11 @@ Outputs & filters:
range_cond([t2.c1 = 1])
explain select * from t2 where c1 = 1 and c2 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter([t2.c2 = 1]), rowset=256
@ -249,11 +249,11 @@ Outputs & filters:
range_cond([t2.c1 = 1])
explain select * from t2 where c1 = 1 and c2 = 1 and c3 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter([t2.c3 < 1], [t2.c2 = 1]), rowset=256
@ -263,11 +263,11 @@ Outputs & filters:
range_cond([t2.c1 = 1])
explain select * from t2 where c1 = 1 and c2 = 1 and c3 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t2 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t2 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t2.c4], [t2.c5], [t2.c6], [t2.c7], [t2.c8], [t2.c9], [t2.c10]), filter([t2.c2 = 1], [t2.c3 = 1]), rowset=256
@ -277,12 +277,12 @@ Outputs & filters:
range_cond([t2.c1 = 1])
explain select count(*) from t3;
Query Plan
=================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY| |1 |2 |
|1 | TABLE SCAN |t3(k1)|1 |2 |
=================================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |SCALAR GROUP BY | |1 |2 |
|1 |└─TABLE FULL SCAN|t3(k1)|1 |2 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), rowset=256
@ -293,11 +293,11 @@ Outputs & filters:
range_key([t3.c1], [t3.c2], [t3.c6]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select * from t3 where c1 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -307,11 +307,11 @@ Outputs & filters:
range_cond([t3.c1 = 1])
explain select * from t3 where c1 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -321,11 +321,11 @@ Outputs & filters:
range_cond([t3.c1 < 1])
explain select * from t3 where c1 > 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -335,11 +335,11 @@ Outputs & filters:
range_cond([t3.c1 > 1])
explain select * from t3 where c1 > 1 and c1 < 10;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -349,11 +349,11 @@ Outputs & filters:
range_cond([t3.c1 > 1], [t3.c1 < 10])
explain select * from t3 where c1 = 1 and c2 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -363,11 +363,11 @@ Outputs & filters:
range_cond([t3.c1 = 1], [t3.c2 < 1])
explain select * from t3 where c1 = 1 and c2 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter(nil), rowset=256
@ -377,11 +377,11 @@ Outputs & filters:
range_cond([t3.c1 = 1], [t3.c2 = 1])
explain select * from t3 where c1 = 1 and c2 = 1 and c3 < 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter([t3.c3 < 1]), rowset=256
@ -391,11 +391,11 @@ Outputs & filters:
range_cond([t3.c1 = 1], [t3.c2 = 1])
explain select * from t3 where c1 = 1 and c2 = 1 and c3 = 1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t3 |1 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t3 |1 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t3.c1], [t3.c2], [t3.c3], [t3.c4], [t3.c5], [t3.c6], [t3.c7], [t3.c8], [t3.c9], [t3.c10]), filter([t3.c3 = 1]), rowset=256

View File

@ -11,19 +11,19 @@ select /*+ USE_PX parallel(3) */* from
(select c1,count(c2) c2 from t1 group by c1)c) a join
(select c1,count(*) c2 from t2 group by c1)b on a.c1=b.c1 ;
Query Plan
===========================================
|ID|OPERATOR |NAME |
-------------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | HASH JOIN | |
|3 | PX PARTITION ITERATOR | |
|4 | TABLE SCAN |t1 |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |t2 |
===========================================
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |PX COORDINATOR | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─HASH JOIN | |
|3 | ├─PX PARTITION ITERATOR | |
|4 | │ └─TABLE FULL SCAN |t1 |
|5 | └─EXCHANGE IN DISTR | |
|6 | └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | └─PX BLOCK ITERATOR | |
|8 | └─TABLE FULL SCAN |t2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, 1, t2.c1, 1)]), filter(nil), rowset=256
@ -63,24 +63,24 @@ c1 c2 c1 c2
explain basic
select a.c2,count(*) from (select /*+ USE_PX parallel(3) PQ_DISTRIBUTE(b HASH HASH) */a.c1,a.c2,b.c1 c3,b.c2 c4 from t1 a join t2 b on a.c1=b.c1)a group by a.c2;
Query Plan
==================================================
|ID|OPERATOR |NAME |
--------------------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10002|
|2 | HASH GROUP BY | |
|3 | EXCHANGE IN DISTR | |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10001|
|5 | HASH GROUP BY | |
|6 | HASH JOIN | |
|7 | PART JOIN FILTER CREATE |:BF0000 |
|8 | EXCHANGE IN DISTR | |
|9 | EXCHANGE OUT DISTR (PKEY) |:EX10000|
|10| PX BLOCK ITERATOR | |
|11| TABLE SCAN |b |
|12| PX PARTITION HASH JOIN-FILTER|:BF0000 |
|13| TABLE SCAN |a |
==================================================
=========================================================
|ID|OPERATOR |NAME |
---------------------------------------------------------
|0 |PX COORDINATOR | |
|1 |└─EXCHANGE OUT DISTR |:EX10002|
|2 | └─HASH GROUP BY | |
|3 | └─EXCHANGE IN DISTR | |
|4 | └─EXCHANGE OUT DISTR (HASH) |:EX10001|
|5 | └─HASH GROUP BY | |
|6 | └─HASH JOIN | |
|7 | ├─PART JOIN FILTER CREATE |:BF0000 |
|8 | │ └─EXCHANGE IN DISTR | |
|9 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|10| │ └─PX BLOCK ITERATOR | |
|11| │ └─TABLE FULL SCAN |b |
|12| └─PX PARTITION HASH JOIN-FILTER|:BF0000 |
|13| └─TABLE FULL SCAN |a |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(*)))]), filter(nil), rowset=256

View File

@ -3,31 +3,31 @@ create table t1 (c1 int, c2 int, c3 int);
create table t2 (c1 int, c2 int, c3 int);
explain select /*+ use_px parallel(2) use_hash(c d) */ * from (select a.c2, b.c3 from (select /*+ use_hash(a, b) */ c1, c2, count(*) c3 from t1 group by 1, 2) a, (select c1, c2, count(*) c3 from t1 group by 1, 2) b where a.c1 = b.c1) c, (select c1, c2, count(*) c3 from t1 group by 1, 2) d where c.c2 = d.c2;
Query Plan
============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------
|0 |TEMP TABLE TRANSFORMATION | |1 |5 |
|1 | PX COORDINATOR | |1 |4 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |4 |
|3 | TEMP TABLE INSERT |TEMP1 |1 |3 |
|4 | HASH GROUP BY | |1 |3 |
|5 | EXCHANGE IN DISTR | |2 |3 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |2 |3 |
|7 | HASH GROUP BY | |2 |2 |
|8 | PX BLOCK ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1 |1 |1 |
|10| PX COORDINATOR | |1 |2 |
|11| EXCHANGE OUT DISTR |:EX20002 |1 |2 |
|12| SHARED HASH JOIN | |1 |1 |
|13| EXCHANGE IN DISTR | |1 |1 |
|14| EXCHANGE OUT DISTR (BC2HOST) |:EX20001 |1 |1 |
|15| SHARED HASH JOIN | |1 |1 |
|16| EXCHANGE IN DISTR | |1 |1 |
|17| EXCHANGE OUT DISTR (BC2HOST)|:EX20000 |1 |1 |
|18| TEMP TABLE ACCESS |VIEW2(TEMP1)|1 |1 |
|19| TEMP TABLE ACCESS |VIEW3(TEMP1)|1 |1 |
|20| TEMP TABLE ACCESS |VIEW1(TEMP1)|1 |1 |
============================================================================
====================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------------------------
|0 |TEMP TABLE TRANSFORMATION | |1 |5 |
|1 |├─PX COORDINATOR | |1 |4 |
|2 |│ └─EXCHANGE OUT DISTR |:EX10001 |1 |4 |
|3 | └─TEMP TABLE INSERT |TEMP1 |1 |3 |
|4 | └─HASH GROUP BY | |1 |3 |
|5 | └─EXCHANGE IN DISTR | |2 |3 |
|6 | └─EXCHANGE OUT DISTR (HASH) |:EX10000 |2 |3 |
|7 | └─HASH GROUP BY | |2 |2 |
|8 | └─PX BLOCK ITERATOR | |1 |1 |
|9 | └─TABLE FULL SCAN |t1 |1 |1 |
|10|└─PX COORDINATOR | |1 |2 |
|11| └─EXCHANGE OUT DISTR |:EX20002 |1 |2 |
|12| └─SHARED HASH JOIN | |1 |1 |
|13| ├─EXCHANGE IN DISTR | |1 |1 |
|14| │ └─EXCHANGE OUT DISTR (BC2HOST) |:EX20001 |1 |1 |
|15| │ └─SHARED HASH JOIN | |1 |1 |
|16| │ ├─EXCHANGE IN DISTR | |1 |1 |
|17| │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX20000 |1 |1 |
|18| │ └─TEMP TABLE ACCESS |VIEW2(TEMP1)|1 |1 |
|19| │ └─TEMP TABLE ACCESS |VIEW3(TEMP1)|1 |1 |
|20| └─TEMP TABLE ACCESS |VIEW1(TEMP1)|1 |1 |
====================================================================================
Outputs & filters:
-------------------------------------
0 - output([VIEW2.t1.c2], [VIEW3.T_FUN_COUNT(*)], [VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.T_FUN_COUNT(*)]), filter(nil), rowset=256
@ -68,30 +68,30 @@ Outputs & filters:
access([VIEW1.T_FUN_COUNT(*)], [VIEW1.t1.c1], [VIEW1.t1.c2])
explain select /*+ use_px parallel(2) use_merge(a b) */ b.c2, sum(a.c3) from (select /*+ NO_USE_HASH_AGGREGATION */ c1, c2, count(*) c3 from t1 group by 1, 2) a, t2 b where a.c1 = b.c1 group by 1;
Query Plan
=========================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |5 |
|1 | EXCHANGE OUT DISTR |:EX10003|1 |5 |
|2 | HASH GROUP BY | |1 |5 |
|3 | EXCHANGE IN DISTR | |2 |5 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10002|2 |4 |
|5 | HASH GROUP BY | |2 |4 |
|6 | SUBPLAN SCAN |VIEW1 |1 |3 |
|7 | MERGE GROUP BY | |1 |3 |
|8 | PARTITION SORT | |1 |3 |
|9 | MERGE JOIN | |1 |3 |
|10| SORT | |1 |2 |
|11| EXCHANGE IN DISTR | |1 |2 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|13| PX BLOCK ITERATOR | |1 |1 |
|14| TABLE SCAN |b |1 |1 |
|15| SORT | |1 |2 |
|16| EXCHANGE IN DISTR | |1 |2 |
|17| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|18| PX BLOCK ITERATOR | |1 |1 |
|19| TABLE SCAN |t1 |1 |1 |
=========================================================================
=====================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |5 |
|1 |└─EXCHANGE OUT DISTR |:EX10003|1 |5 |
|2 | └─HASH GROUP BY | |1 |5 |
|3 | └─EXCHANGE IN DISTR | |2 |5 |
|4 | └─EXCHANGE OUT DISTR (HASH) |:EX10002|2 |4 |
|5 | └─HASH GROUP BY | |2 |4 |
|6 | └─SUBPLAN SCAN |VIEW1 |1 |3 |
|7 | └─MERGE GROUP BY | |1 |3 |
|8 | └─PARTITION SORT | |1 |3 |
|9 | └─MERGE JOIN | |1 |3 |
|10| ├─SORT | |1 |2 |
|11| │ └─EXCHANGE IN DISTR | |1 |2 |
|12| │ └─EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|13| │ └─PX BLOCK ITERATOR | |1 |1 |
|14| │ └─TABLE FULL SCAN |b |1 |1 |
|15| └─SORT | |1 |2 |
|16| └─EXCHANGE IN DISTR | |1 |2 |
|17| └─EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|18| └─PX BLOCK ITERATOR | |1 |1 |
|19| └─TABLE FULL SCAN |t1 |1 |1 |
=====================================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(VIEW1.b.c2, T_FUN_SUM(T_FUN_SUM(VIEW1.a.c3)))]), filter(nil), rowset=256
@ -135,25 +135,25 @@ Outputs & filters:
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
explain select /*+ use_px parallel(2) use_merge(a b) */ * from (select /*+ NO_USE_HASH_AGGREGATION */ c1, c2, count(*) c3 from t1 group by 1, 2) a, t2 b where a.c1 = b.c1;
Query Plan
====================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |5 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |4 |
|2 | MERGE GROUP BY | |1 |4 |
|3 | PARTITION SORT | |1 |4 |
|4 | MERGE JOIN | |1 |4 |
|5 | SORT | |1 |2 |
|6 | EXCHANGE IN DISTR | |1 |2 |
|7 | EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|8 | PX BLOCK ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1 |1 |1 |
|10| SORT | |1 |2 |
|11| EXCHANGE IN DISTR | |1 |2 |
|12| EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|13| PX BLOCK ITERATOR | |1 |1 |
|14| TABLE SCAN |b |1 |1 |
====================================================================
===========================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |5 |
|1 |└─EXCHANGE OUT DISTR |:EX10002|1 |4 |
|2 | └─MERGE GROUP BY | |1 |4 |
|3 | └─PARTITION SORT | |1 |4 |
|4 | └─MERGE JOIN | |1 |4 |
|5 | ├─SORT | |1 |2 |
|6 | │ └─EXCHANGE IN DISTR | |1 |2 |
|7 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000|1 |2 |
|8 | │ └─PX BLOCK ITERATOR | |1 |1 |
|9 | │ └─TABLE FULL SCAN |t1 |1 |1 |
|10| └─SORT | |1 |2 |
|11| └─EXCHANGE IN DISTR | |1 |2 |
|12| └─EXCHANGE OUT DISTR (HASH)|:EX10001|1 |2 |
|13| └─PX BLOCK ITERATOR | |1 |1 |
|14| └─TABLE FULL SCAN |b |1 |1 |
===========================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, T_FUN_COUNT(*), b.c1, b.c2, b.c3)]), filter(nil), rowset=256

View File

@ -7,14 +7,14 @@ create table t1 (c1 int(11) not null, c2 int(11) not null, c3 int(11) not null,
explain select * from t1;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | └─PX PARTITION ITERATOR| |1 |7 |
|3 | └─TABLE FULL SCAN |t1 |1 |7 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256
@ -28,14 +28,14 @@ Outputs & filters:
range_key([t1.c1], [t1.c2], [t1.c3]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select /*+use_px*/ * from t1;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | └─PX PARTITION ITERATOR| |1 |7 |
|3 | └─TABLE FULL SCAN |t1 |1 |7 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256
@ -49,14 +49,14 @@ Outputs & filters:
range_key([t1.c1], [t1.c2], [t1.c3]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select /*+use_px parallel(15)*/ * from t1;
Query Plan
=======================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR|:EX10000|1 |1 |
|2 | PX BLOCK ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1 |1 |1 |
=======================================================
=========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |1 |
|2 | └─PX BLOCK ITERATOR| |1 |1 |
|3 | └─TABLE FULL SCAN|t1 |1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256
@ -69,14 +69,14 @@ Outputs & filters:
range_key([t1.c1], [t1.c2], [t1.c3]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select /*+no_use_px */ * from t1;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | └─PX PARTITION ITERATOR| |1 |7 |
|3 | └─TABLE FULL SCAN |t1 |1 |7 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256
@ -90,14 +90,14 @@ Outputs & filters:
range_key([t1.c1], [t1.c2], [t1.c3]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select /*+no_use_px use_px*/ * from t1;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | └─PX PARTITION ITERATOR| |1 |7 |
|3 | └─TABLE FULL SCAN |t1 |1 |7 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256
@ -111,14 +111,14 @@ Outputs & filters:
range_key([t1.c1], [t1.c2], [t1.c3]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
explain select /*+use_px no_use_px */ * from t1;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | PX PARTITION ITERATOR| |1 |7 |
|3 | TABLE SCAN |t1 |1 |7 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |8 |
|2 | └─PX PARTITION ITERATOR| |1 |7 |
|3 | └─TABLE FULL SCAN |t1 |1 |7 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t1.c3)]), filter(nil), rowset=256

File diff suppressed because it is too large Load Diff

View File

@ -70,18 +70,18 @@ insert into score values
(64, 'MA', 87);
explain select /*+ USE_PX parallel(2) */ * from stu, score where stu.sid = score.sid order by score.sid;
Query Plan
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |13 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | SORT | |1 |11 |
|3 | PX PARTITION ITERATOR | |1 |11 |
|4 | MERGE JOIN | |1 |11 |
|5 | TABLE SCAN |score |1 |6 |
|6 | SORT | |1 |6 |
|7 | TABLE SCAN |stu |1 |6 |
==============================================================
===============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |13 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | └─SORT | |1 |11 |
|3 | └─PX PARTITION ITERATOR| |1 |11 |
|4 | └─MERGE JOIN | |1 |11 |
|5 | ├─TABLE FULL SCAN |score |1 |6 |
|6 | └─SORT | |1 |6 |
|7 | └─TABLE FULL SCAN|stu |1 |6 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256

View File

@ -70,27 +70,27 @@ insert into score values
(64, 'MA', 87);
explain select /*+ USE_PX parallel(2) */ * from stu, score where stu.sid != score.sid and stu.sid < 12;
Query Plan
=======================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------------------
|0 |PX COORDINATOR | |0 |11 |
|1 | EXCHANGE OUT DISTR |:EX10001|0 |11 |
|2 | NESTED-LOOP JOIN | |0 |11 |
|3 | PX BLOCK ITERATOR | |1 |6 |
|4 | TABLE SCAN |score |1 |6 |
|5 | MATERIAL | |1 |6 |
|6 | EXCHANGE IN DISTR | |1 |6 |
|7 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000|1 |6 |
|8 | PX BLOCK ITERATOR | |1 |6 |
|9 | TABLE SCAN |stu |1 |6 |
=======================================================================
============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------
|0 |PX COORDINATOR | |0 |11 |
|1 |└─EXCHANGE OUT DISTR |:EX10001|0 |11 |
|2 | └─NESTED-LOOP JOIN | |0 |11 |
|3 | ├─PX BLOCK ITERATOR | |1 |6 |
|4 | │ └─TABLE FULL SCAN |score |1 |6 |
|5 | └─MATERIAL | |1 |6 |
|6 | └─EXCHANGE IN DISTR | |1 |6 |
|7 | └─EXCHANGE OUT DISTR (BROADCAST)|:EX10000|1 |6 |
|8 | └─PX BLOCK ITERATOR | |1 |6 |
|9 | └─TABLE FULL SCAN |stu |1 |6 |
============================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256
1 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256
dop=2
2 - output([stu.sid], [score.sid], [score.subject], [score.score], [stu.cls], [stu.name]), filter(nil), rowset=256
conds([stu.sid != score.sid]), nl_params_(nil), batch_join=false
conds([stu.sid != score.sid]), nl_params_(nil), use_batch=false
3 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256
4 - output([score.sid], [score.subject], [score.score]), filter(nil), rowset=256
access([score.sid], [score.subject], [score.score]), partitions(p[0-5])
@ -135,19 +135,19 @@ sid name cls sid subject score
11 a1 1 64 MA 87
explain select /*+ USE_PX parallel(2) */ * from score, teacher where teacher.subject = score.subject and teacher.tid = 1;
Query Plan
====================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |10 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |9 |
|2 | SHARED HASH JOIN | |1 |8 |
|3 | EXCHANGE IN DISTR | |1 |6 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |6 |
|5 | PX BLOCK ITERATOR | |1 |6 |
|6 | TABLE SCAN |score |1 |6 |
|7 | PX BLOCK ITERATOR | |1 |2 |
|8 | TABLE GET |teacher |1 |2 |
====================================================================
========================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |10 |
|1 |└─EXCHANGE OUT DISTR |:EX10001|1 |9 |
|2 | └─SHARED HASH JOIN | |1 |8 |
|3 | ├─EXCHANGE IN DISTR | |1 |6 |
|4 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |6 |
|5 | │ └─PX BLOCK ITERATOR | |1 |6 |
|6 | └─TABLE FULL SCAN |score |1 |6 |
|7 | └─PX BLOCK ITERATOR | |1 |2 |
|8 | └─TABLE GET |teacher |1 |2 |
========================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(score.sid, score.subject, score.score, teacher.tid, teacher.name, teacher.subject)]), filter(nil), rowset=256

View File

@ -70,17 +70,17 @@ insert into score values
(64, 'MA', 87);
explain select /*+ USE_PX parallel(2) */ * from stu, score where stu.sid = score.sid;
Query Plan
===========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |13 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | PX PARTITION ITERATOR| |1 |11 |
|3 | MERGE JOIN | |1 |11 |
|4 | TABLE SCAN |score |1 |6 |
|5 | SORT | |1 |6 |
|6 | TABLE SCAN |stu |1 |6 |
===========================================================
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |13 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|2 | └─PX PARTITION ITERATOR| |1 |11 |
|3 | └─MERGE JOIN | |1 |11 |
|4 | ├─TABLE FULL SCAN |score |1 |6 |
|5 | └─SORT | |1 |6 |
|6 | └─TABLE FULL SCAN|stu |1 |6 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(stu.sid, stu.name, stu.cls, score.sid, score.subject, score.score)]), filter(nil), rowset=256

View File

@ -244,11 +244,11 @@ select abs(t1) from t;
+---------+
explain select abs(t1) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t1, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -264,11 +264,11 @@ select abs(t2) from t;
+---------+
explain select abs(t2) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t2, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -284,11 +284,11 @@ select abs(t3) from t;
+---------+
explain select abs(t3) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t3, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -304,11 +304,11 @@ select abs(t4) from t;
+---------+
explain select abs(t4) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t4, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -324,11 +324,11 @@ select abs(t5) from t;
+---------+
explain select abs(t5) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t5)]), filter(nil), rowset=256
@ -344,11 +344,11 @@ select abs(t6) from t;
+---------+
explain select abs(t6) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t6, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -364,11 +364,11 @@ select abs(t7) from t;
+---------+
explain select abs(t7) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t7, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -384,11 +384,11 @@ select abs(t8) from t;
+---------+
explain select abs(t8) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t8, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -404,11 +404,11 @@ select abs(t9) from t;
+---------+
explain select abs(t9) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t9, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -424,11 +424,11 @@ select abs(t10) from t;
+----------+
explain select abs(t10) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t10)]), filter(nil), rowset=256
@ -444,11 +444,11 @@ select abs(t11) from t;
+---------------------+
explain select abs(t11) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t11, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -464,11 +464,11 @@ select abs(t12) from t;
+---------------------+
explain select abs(t12) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t12, DOUBLE UNSIGNED(-1, -1)))]), filter(nil), rowset=256
@ -484,11 +484,11 @@ select abs(t13) from t;
+----------+
explain select abs(t13) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t13)]), filter(nil), rowset=256
@ -504,11 +504,11 @@ select abs(t14) from t;
+----------+
explain select abs(t14) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t14)]), filter(nil), rowset=256
@ -524,11 +524,11 @@ select abs(t15) from t;
+----------+
explain select abs(t15) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t15)]), filter(nil), rowset=256
@ -544,11 +544,11 @@ select abs(t16) from t;
+----------+
explain select abs(t16) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t16)]), filter(nil), rowset=256
@ -564,11 +564,11 @@ select abs(t17) from t;
+----------------+
explain select abs(t17) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t17, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -584,11 +584,11 @@ select abs(t18) from t;
+----------------+
explain select abs(t18) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t18, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -604,11 +604,11 @@ select abs(t19) from t;
+----------+
explain select abs(t19) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t19, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -624,11 +624,11 @@ select abs(t20) from t;
+----------+
explain select abs(t20) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t20, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -644,11 +644,11 @@ select abs(t21) from t;
+----------+
explain select abs(t21) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t21, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -664,11 +664,11 @@ select abs(t22) from t;
+----------+
explain select abs(t22) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t22, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -684,11 +684,11 @@ select abs(t23) from t;
+----------+
explain select abs(t23) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t23, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -704,11 +704,11 @@ select abs(t24) from t;
+----------+
explain select abs(t24) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t24, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -724,11 +724,11 @@ select abs(t25) from t;
+----------+
explain select abs(t25) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t25, DOUBLE(-1, -1)))]), filter(nil)
@ -744,11 +744,11 @@ select abs(t26) from t;
+----------+
explain select abs(t26) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t26, DOUBLE(-1, -1)))]), filter(nil)
@ -764,11 +764,11 @@ select abs(t27) from t;
+----------+
explain select abs(t27) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t27, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -784,11 +784,11 @@ select abs(t28) from t;
+----------+
explain select abs(t28) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t28, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -804,11 +804,11 @@ select abs(t29) from t;
+----------+
explain select abs(t29) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t29, DOUBLE(-1, -1)))]), filter(nil), rowset=256

View File

@ -30,13 +30,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |1 |13 |
|1 | EXPRESSION | |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
==================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
columns([{t2: ({t2: (t2.c1, t2.c2)})}]),
column_values([column_conv(INT,PS:(11,0),NOT NULL,t2.c1.nextval(column_conv(INT,PS:(11,0),NOT NULL,__values.c1)))], [column_conv(INT,PS:(11,0),NULL,__values.c2)])
column_values([column_conv(INT,PS:(11,0),NOT NULL,t2.c1.nextval(column_conv(INT,PS:(11,0),NOT NULL,__values.c1)))], [column_conv(INT,PS:(11,0),NULL,
__values.c2)])
1 - output([__values.c1], [__values.c2]), filter(nil)
values({'0', '1'})

View File

@ -7319,11 +7319,11 @@ insert into t1 values('1901-01-01', 1901);
explain_protocol: 2
EXPLAIN select nullif(c1, c2) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c1, t1.c2)]), filter(nil), rowset=256
@ -7338,11 +7338,11 @@ select nullif(c1, c2) from t1;
+---------------------------+
EXPLAIN select nullif(c2, c1) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c2, t1.c1)]), filter(nil), rowset=256
@ -7357,11 +7357,11 @@ select nullif(c2, c1) from t1;
+----------------+
EXPLAIN select nullif(c1, c1) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c1, t1.c1)]), filter(nil), rowset=256
@ -7376,11 +7376,11 @@ select nullif(c1, c1) from t1;
+----------------+
EXPLAIN select nullif(c2, c2) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c2, t1.c2)]), filter(nil), rowset=256

View File

@ -30,14 +30,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |25 |6 |
|1 | TABLE SCAN |t1 |5 |3 |
|2 | MATERIAL | |5 |3 |
|3 | TABLE SCAN |t2 |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN |t2 |5 |3 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,
@ -53,14 +53,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |25 |6 |
|1 | TABLE SCAN |t1 |5 |3 |
|2 | MATERIAL | |5 |3 |
|3 | TABLE SCAN |t2 |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN |t2 |5 |3 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,

View File

@ -49,14 +49,14 @@ set @@ob_enable_plan_cache = 0;
EXPLAIN BASIC select * from t3 a ;
Query Plan
=====================================
|ID|OPERATOR |NAME |
-------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10000|
|2 | PX PARTITION ITERATOR| |
|3 | TABLE SCAN |a |
=====================================
=======================================
|ID|OPERATOR |NAME |
---------------------------------------
|0 |PX COORDINATOR | |
|1 |└─EXCHANGE OUT DISTR |:EX10000|
|2 | └─PX PARTITION ITERATOR| |
|3 | └─TABLE FULL SCAN |a |
=======================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -88,10 +88,10 @@ Query Plan
|ID|OPERATOR |NAME |
----------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10000|
|2 | SORT | |
|3 | PX BLOCK ITERATOR | |
|4 | TABLE SCAN |a |
|1 |└─EXCHANGE OUT DISTR |:EX10000|
|2 | └─SORT | |
|3 | └─PX BLOCK ITERATOR | |
|4 | └─TABLE FULL SCAN |a |
========================================
Outputs & filters:
-------------------------------------
@ -122,20 +122,20 @@ select /*+ parallel(2) NO_USE_HASH_AGGREGATION */ a.c1,a.c2+a.c1 from t3 a grou
##ms receieve local order
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2=b.c1 order by a.c1,a.c2;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE SCAN |b |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX PARTITION ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -175,20 +175,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
+----+------+
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2+2=b.c1+1 order by a.c1,a.c2+2;
Query Plan
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | SHARED HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |b |
===============================================
====================================================
|ID|OPERATOR |NAME |
----------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─SHARED HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -227,20 +227,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
+----+------+
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on abs(a.c2)+2=b.c1 order by a.c1,a.c2+2;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE SCAN |b |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX PARTITION ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -283,20 +283,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
## broadcast shuffle
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH JOIN | |
|4 | PX PARTITION ITERATOR | |
|5 | TABLE SCAN |b |
|6 | EXCHANGE IN DISTR | |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |a |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH JOIN | |
|4 | ├─PX PARTITION ITERATOR | |
|5 | │ └─TABLE FULL SCAN |b |
|6 | └─EXCHANGE IN DISTR | |
|7 | └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |a |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2, b.c1, b.c2)]), filter(nil), rowset=256
@ -335,20 +335,20 @@ select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b wher
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1+2=b.c2 + 1 order by a.c1,b.c1+2;
Query Plan
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | SHARED HASH JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |b |
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |a |
===============================================
====================================================
|ID|OPERATOR |NAME |
----------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─SHARED HASH JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |b |
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |a |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2, b.c1, b.c2)]), filter(nil), rowset=256
@ -385,23 +385,23 @@ select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b wher
EXPLAIN BASIC select /*+ use_px parallel(2) */ c2,sum(c1) from (select a.c1,b.c2 from t5 a , t5 b where a.c1=b.c2) group by c2 order by 1,2;
Query Plan
=============================================
|ID|OPERATOR |NAME |
---------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10002|
|2 | MERGE GROUP BY | |
|3 | SORT | |
|4 | HASH JOIN | |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (HASH)|:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |a |
|9 | EXCHANGE IN DISTR | |
|10| EXCHANGE OUT DISTR (HASH)|:EX10001|
|11| PX BLOCK ITERATOR | |
|12| TABLE SCAN |b |
=============================================
===================================================
|ID|OPERATOR |NAME |
---------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10002|
|2 | └─MERGE GROUP BY | |
|3 | └─SORT | |
|4 | └─HASH JOIN | |
|5 | ├─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |a |
|9 | └─EXCHANGE IN DISTR | |
|10| └─EXCHANGE OUT DISTR (HASH)|:EX10001|
|11| └─PX BLOCK ITERATOR | |
|12| └─TABLE FULL SCAN |b |
===================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(b.c2, T_FUN_SUM(a.c1))]), filter(nil), rowset=256

View File

@ -170,11 +170,11 @@ alter system flush plan cache global;
// 测试int的normal case,应该返回'a'
EXPLAIN select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.col_int = 1 THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
@ -190,15 +190,14 @@ select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1;
// 测试int需要加cast的情况,第一个when需要加cast, 第二个when不需要
EXPLAIN select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.col_int, DECIMAL(11, 0)) = cast('1', DECIMAL(1, -1)) THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil),
rowset=256
0 - output([CASE WHEN cast(t1.col_int, DECIMAL(11, 0)) = cast('1', DECIMAL(1, -1)) THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
access([t1.col_int]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
@ -211,11 +210,11 @@ select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1;
// 测试null的情况,应该返回'c',而且没有cast出现
EXPLAIN select case col_null when 1 then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.col_null = 1 THEN 'a' WHEN t1.col_null = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
@ -258,8 +257,7 @@ Query Plan
==========================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END]),
filter(nil)
0 - output([CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END]), filter(nil)
values({CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END})
select case NULL when NULL then 1 when 'here' then 2 else 'hh' end from dual;
+-------------------------------------------------------------+
@ -315,14 +313,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |1 |13 |
|1 | EXPRESSION | |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
==================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.cond1, t1.cond2)})}]),
column_values([T_HIDDEN_PK], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.a)], [column_conv(VARCHAR,utf8mb4_bin,length:100,NULL,__values.cond1)],
[column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.cond2)])
column_values([T_HIDDEN_PK], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.a)], [column_conv(VARCHAR,utf8mb4_bin,length:100,NULL,
__values.cond1)], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.cond2)])
1 - output([__values.a], [__values.cond1], [__values.cond2]), filter(nil)
values({'cond', 'COND', 'COND'})
insert into t1 values('cond', 'COND', 'COND');
@ -330,15 +328,15 @@ explain_protocol: 2
// 返回Null,a和cond1以及a和cond2比较都会使用utf8_bin作为collation type(因为有aggregate collation的过程)
EXPLAIN select case a when cond1 then '1' when cond2 then '2' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN '1' WHEN cast(t1.a, VARCHAR(1048576)) = cast(t1.cond2, VARCHAR(1048576)) THEN '2' ELSE
NULL END]), filter(nil), rowset=256
NULL END]), filter(nil), rowset=256
access([t1.a], [t1.cond1], [t1.cond2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
@ -351,11 +349,11 @@ select case a when cond1 then '1' when cond2 then '2' end from t1;
// 返回'neq', a和cond1比较使用的是utf8_bin
EXPLAIN select case a when cond1 then 'eq' else 'neq' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN 'eq' ELSE 'neq' END]), filter(nil), rowset=256
@ -371,11 +369,11 @@ select case a when cond1 then 'eq' else 'neq' end from t1;
// 返回'eq', a和cond1比较使用的是utf8_general_ci
EXPLAIN select case a when cond2 then 'eq' else 'neq' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.a = t1.cond2 THEN 'eq' ELSE 'neq' END]), filter(nil), rowset=256
@ -391,11 +389,11 @@ select case a when cond2 then 'eq' else 'neq' end from t1;
// arg case子节点也是arg case的情况测试,应该都被改为case expr(应该返回'ok')
EXPLAIN select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN CASE WHEN t1.a = 'cond' THEN 'eq' ELSE 'neq' END = 'eq' THEN 'ok' ELSE 'not ok' END]), filter(nil), rowset=256

View File

@ -14,14 +14,14 @@ set @@ob_enable_plan_cache = 0;
explain select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1)]), filter(nil), rowset=256
@ -45,14 +45,14 @@ select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2;
explain select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1 + x.c2)]), filter(nil), rowset=256
@ -76,14 +76,14 @@ select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2;
explain select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select distinct c2, c1 from t1) x ) y group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1 + x.c2)], [T_FUN_MAX(x.c1 + 2)]), filter(nil), rowset=256
@ -107,11 +107,11 @@ select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select
explain select * from t1 where c2 in (select 1 from t1);
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1]), rowset=256

View File

@ -23,17 +23,18 @@ insert into t1 values('3', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11',
explain_protocol: 2
EXPLAIN select * from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |4 |4 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |4 |4 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15],
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), filter(nil), rowset=256
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15],
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), partitions(p0)
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), p
artitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c1]), range(MIN ; MAX)always true
select * from t1;

View File

@ -20,11 +20,11 @@ set @@ob_enable_plan_cache = 0;
explain_protocol: 2
EXPLAIN select * from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |7 |3 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |7 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -45,11 +45,11 @@ select * from t1;
+----+----+------+------+------------+
EXPLAIN select * from t1 order by c1 desc, c2 desc;
Query Plan
=================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |TABLE SCAN|t1(Reverse)|7 |3 |
=================================================
======================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |TABLE FULL SCAN|t1(Reverse)|7 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -70,11 +70,11 @@ select * from t1 order by c1 desc, c2 desc;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 + c2 < 10;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |3 |3 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |3 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + t1.c2 < cast(10, DECIMAL(2, 0))]), rowset=256
@ -92,11 +92,11 @@ select * from t1 where c1 + c2 < 10;
+----+----+------+------+------------+
EXPLAIN select * from t1 limit 2;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -112,11 +112,11 @@ select * from t1 limit 2;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 = 5;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |2 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t1 |2 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -133,11 +133,11 @@ select * from t1 where c1 = 5;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 = 5 or c1 = 7;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |4 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t1 |4 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -168,7 +168,7 @@ Outputs & filters:
is_index_back=false, is_global_index=false,
range_key([t1.c1], [t1.c2]), range[2,4 ; 2,4], [7,5 ; 7,5], [8,7 ; 8,7],
range_cond([(T_OP_OR, t1.c1 = cast(2, DECIMAL(1, 0)) AND t1.c2 = cast(4, DECIMAL(1, 0)), t1.c1 = cast(7, DECIMAL(1, 0)) AND t1.c2 = cast(5, DECIMAL(1,
0)), t1.c1 = cast(8, DECIMAL(1, 0)) AND t1.c2 = cast(7, DECIMAL(1, 0)))])
0)), t1.c1 = cast(8, DECIMAL(1, 0)) AND t1.c2 = cast(7, DECIMAL(1, 0)))])
select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and c2 = 7);
+----+----+------+------+------------+
| c1 | c2 | c3 | c4 | c5 |
@ -179,15 +179,15 @@ select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and
EXPLAIN select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(i1)|1 |4 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(i1)|1 |4 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + cast(cast(2, DECIMAL(1, 0)), DECIMAL(10, 0)) < cast(10, DECIMAL(2, 0))], [t1.c4
> t1.c3]), rowset=256
> t1.c3]), rowset=256
access([t1.c1], [t1.c2], [t1.c4], [t1.c3], [t1.c5]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[true,false],
range_key([t1.c2], [t1.c1]), range(2,MIN ; 2,MAX),
@ -202,11 +202,11 @@ select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3;
EXPLAIN select c1, c2 from t1 where c2 > 4;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(i1)|3 |2 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(i1)|3 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=256
@ -232,7 +232,7 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |7 |51 |
|1 | EXPRESSION | |7 |1 |
|1 |└─EXPRESSION | |7 |1 |
==================================================
Outputs & filters:
-------------------------------------
@ -247,11 +247,11 @@ insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7
# case 1: index back with before_index_back_filter
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|1 |4 |
=============================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |TABLE RANGE SCAN|t1(idx)|1 |4 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 < 4]), rowset=256
@ -271,11 +271,11 @@ select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4;
# case 2: index back without before_index_back_filter
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|1 |18 |
=============================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |TABLE RANGE SCAN|t1(idx)|1 |18 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 < 4]), rowset=256
@ -293,11 +293,11 @@ select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4;
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c3 != 1 limit 2;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|2 |8 |
=============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE FULL SCAN|t1(idx)|2 |8 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 != 1]), rowset=256

View File

@ -36,8 +36,8 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH RIGHT SEMI JOIN | |3 |6 |
|1 | TABLE SCAN |t1 |3 |2 |
|2 | TABLE SCAN |t2 |10 |3 |
|1 |├─TABLE FULL SCAN |t1 |3 |2 |
|2 |└─TABLE FULL SCAN |t2 |10 |3 |
=====================================================
Outputs & filters:
-------------------------------------
@ -71,8 +71,8 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH RIGHT SEMI JOIN | |3 |6 |
|1 | TABLE SCAN |t1 |3 |2 |
|2 | TABLE SCAN |t3 |10 |3 |
|1 |├─TABLE FULL SCAN |t1 |3 |2 |
|2 |└─TABLE FULL SCAN |t3 |10 |3 |
=====================================================
Outputs & filters:
-------------------------------------
@ -107,8 +107,8 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH RIGHT SEMI JOIN | |10 |15 |
|1 | TABLE SCAN |t0 |10 |3 |
|2 | TABLE SCAN |t3 |50 |7 |
|1 |├─TABLE FULL SCAN |t0 |10 |3 |
|2 |└─TABLE FULL SCAN |t3 |50 |7 |
=====================================================
Outputs & filters:
-------------------------------------
@ -140,13 +140,13 @@ a b pk1 pk2
9 9 9 9
explain select * from t1 where a in (select b from t2);
Query Plan
================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |HASH SEMI JOIN | |3 |6 |
|1 | TABLE SCAN |t1 |3 |2 |
|2 | TABLE SCAN |t2(b)|10 |3 |
================================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |HASH SEMI JOIN | |3 |6 |
|1 |├─TABLE FULL SCAN|t1 |3 |2 |
|2 |└─TABLE FULL SCAN|t2(b)|10 |3 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.a], [t1.b]), filter(nil), rowset=256
@ -197,23 +197,23 @@ explain select 1 from t2 where
c2 in (select 1 from t3, t2) and
c1 in (select convert(c6,char(1)) from t2);
Query Plan
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |HASH SEMI JOIN | |1 |6 |
|1 | NESTED-LOOP JOIN CARTESIAN | |1 |4 |
|2 | TABLE SCAN |t2 |1 |2 |
|3 | MATERIAL | |1 |2 |
|4 | SUBPLAN SCAN |VIEW3|1 |2 |
|5 | TABLE SCAN |t3 |1 |2 |
|6 | TABLE SCAN |t2 |1 |2 |
=============================================================
==============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------------------
|0 |HASH SEMI JOIN | |1 |6 |
|1 |├─NESTED-LOOP JOIN CARTESIAN | |1 |4 |
|2 |│ ├─TABLE FULL SCAN |t2 |1 |2 |
|3 |│ └─MATERIAL | |1 |2 |
|4 | └─SUBPLAN SCAN |VIEW3|1 |2 |
|5 | └─TABLE FULL SCAN |t3 |1 |2 |
|6 |└─TABLE FULL SCAN |t2 |1 |2 |
==============================================================
Outputs & filters:
-------------------------------------
0 - output([1]), filter(nil), rowset=256
equal_conds([cast(t2.c1, VARCHAR(1048576)) = cast(cast(t2.c6, CHAR(1)), VARCHAR(1048576))]), other_conds(nil)
1 - output([t2.c1]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
2 - output([t2.c1]), filter([cast(t2.c2, DECIMAL(-1, -1)) = cast(1, DECIMAL(1, 0))]), rowset=256
access([t2.c2], [t2.c1]), partitions(p0)
is_index_back=false, is_global_index=false, filter_before_indexback[false],

View File

@ -1789,36 +1789,36 @@ select cte3.a+1,cte3.b+1,cte3.c+1 from cte3, cte2 where cte2.a < 3 and cte3.a <
SELECT cte1.a, cte1.b FROM cte1 JOIN cte3
on cte1.a < cte3.c;
Query Plan
====================================
|ID|OPERATOR |NAME|
------------------------------------
|0 |NESTED-LOOP JOIN | |
|1 | SUBPLAN SCAN |cte3|
|2 | RECURSIVE UNION ALL | |
|3 | RECURSIVE UNION ALL | |
|4 | RECURSIVE UNION ALL | |
|5 | EXPRESSION | |
|6 | TABLE SCAN |cte1|
|7 | TABLE SCAN |cte2|
|8 | NESTED-LOOP JOIN | |
|9 | TABLE SCAN |cte3|
|10| MATERIAL | |
|11| SUBPLAN SCAN |cte2|
|12| RECURSIVE UNION ALL | |
|13| RECURSIVE UNION ALL| |
|14| EXPRESSION | |
|15| TABLE SCAN |cte1|
|16| TABLE SCAN |cte2|
|17| MATERIAL | |
|18| SUBPLAN SCAN |cte1|
|19| RECURSIVE UNION ALL | |
|20| EXPRESSION | |
|21| TABLE SCAN |cte1|
====================================
===========================================
|ID|OPERATOR |NAME|
-------------------------------------------
|0 |NESTED-LOOP JOIN | |
|1 |├─SUBPLAN SCAN |cte3|
|2 |│ └─RECURSIVE UNION ALL | |
|3 | ├─RECURSIVE UNION ALL | |
|4 | │ ├─RECURSIVE UNION ALL | |
|5 | │ │ ├─EXPRESSION | |
|6 | │ │ └─TABLE FULL SCAN |cte1|
|7 | │ └─TABLE FULL SCAN |cte2|
|8 | └─NESTED-LOOP JOIN | |
|9 | ├─TABLE FULL SCAN |cte3|
|10| └─MATERIAL | |
|11| └─SUBPLAN SCAN |cte2|
|12| └─RECURSIVE UNION ALL | |
|13| ├─RECURSIVE UNION ALL| |
|14| │ ├─EXPRESSION | |
|15| │ └─TABLE FULL SCAN |cte1|
|16| └─TABLE FULL SCAN |cte2|
|17|└─MATERIAL | |
|18| └─SUBPLAN SCAN |cte1|
|19| └─RECURSIVE UNION ALL | |
|20| ├─EXPRESSION | |
|21| └─TABLE FULL SCAN |cte1|
===========================================
Outputs & filters:
-------------------------------------
0 - output([cte1.a], [cte1.b]), filter(nil), rowset=256
conds([cte1.a < cte3.c]), nl_params_(nil), batch_join=false
conds([cte1.a < cte3.c]), nl_params_(nil), use_batch=false
1 - output([cte3.c]), filter(nil), rowset=256
access([cte3.c])
2 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
@ -1835,7 +1835,7 @@ Outputs & filters:
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
8 - output([cte3.a + 1], [cte3.b + 1], [cte3.c + 1]), filter(nil), rowset=256
conds([cte3.a < cte2.b]), nl_params_(nil), batch_join=false
conds([cte3.a < cte2.b]), nl_params_(nil), use_batch=false
9 - output([cte3.a], [cte3.b], [cte3.c]), filter([cte3.a < 10]), rowset=256
access([cte3.a], [cte3.b], [cte3.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],