[FEAT MERGE] support auto dop

This commit is contained in:
obdev
2023-04-28 15:11:52 +00:00
committed by ob-robot
parent 642f1c7d84
commit b41dc0ebdd
106 changed files with 3815 additions and 2844 deletions

View File

@ -294,55 +294,20 @@ call dbms_stats.gather_table_stats('test','t_p');
call dbms_stats.gather_table_stats('test','t_p4');
explain basic delete /*+no_use_px, use_nl(t_p,t_p4), parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c1 and t_p.c1 >= 5;
Query Plan
=============================================
|ID|OPERATOR |NAME |
---------------------------------------------
|0 |PX COORDINATOR | |
|1 |└─EXCHANGE OUT DISTR |:EX10000|
|2 | └─PX PARTITION ITERATOR | |
|3 | └─DELETE | |
|4 | └─NESTED-LOOP JOIN | |
|5 | ├─TABLE RANGE SCAN |t_p |
|6 | └─DISTRIBUTED TABLE GET|t_p4 |
=============================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil), rowset=256
1 - output(nil), filter(nil), rowset=256
dop=10
2 - output(nil), filter(nil), rowset=256
partition wise, force partition granule
3 - output(nil), filter(nil)
table_columns([{t_p: ({t_p: (t_p.c1, t_p.c2, t_p.c3)})}])
4 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
conds(nil), nl_params_([t_p.c1(:0)]), use_batch=true
5 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_p.c1]), range[5 ; MAX),
range_cond([t_p.c1 >= 5])
6 - output(nil), filter(nil), rowset=256
access([GROUP_ID]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_p4.c1]), range(MIN ; MAX),
range_cond([:0 = t_p4.c1])
explain basic delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c1 and t_p.c1 >= 5;
Query Plan
===================================================
|ID|OPERATOR |NAME |
---------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE RANGE SCAN |t_p4 |
|9 | └─PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
===================================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─NESTED-LOOP JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE RANGE SCAN |t_p |
|8 | └─PX PARTITION ITERATOR | |
|9 | └─TABLE GET |t_p4 |
=================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
@ -350,12 +315,54 @@ Outputs & filters:
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
dop=4
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
conds(nil), nl_params_([t_p.c1(:0)]), use_batch=false
4 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
5 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
(#keys=1, [t_p.c1]), dop=10
6 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
7 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_p.c1]), range[5 ; MAX),
range_cond([t_p.c1 >= 5])
8 - output(nil), filter(nil), rowset=256
affinitize
9 - output(nil), filter(nil), rowset=256
access(nil), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_p4.c1]), range(MIN ; MAX),
range_cond([:0 = t_p4.c1])
explain basic delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c1 and t_p.c1 >= 5;
Query Plan
======================================================
|ID|OPERATOR |NAME |
------------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─SHARED HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE RANGE SCAN |t_p4 |
|9 | └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
======================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
table_columns([{t_p: ({t_p: (t_p.c1, t_p.c2, t_p.c3)})}])
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
dop=10
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
equal_conds([t_p.c1 = t_p4.c1]), other_conds(nil)
4 - output([t_p4.c1]), filter(nil), rowset=256
5 - output([t_p4.c1]), filter(nil), rowset=256
6 - output([t_p4.c1]), filter(nil), rowset=256
(#keys=1, [t_p4.c1]), dop=10
dop=10
7 - output([t_p4.c1]), filter(nil), rowset=256
8 - output([t_p4.c1]), filter(nil), rowset=256
access([t_p4.c1]), partitions(p[0-3])
@ -363,7 +370,6 @@ Outputs & filters:
range_key([t_p4.c1]), range[5 ; MAX),
range_cond([t_p4.c1 >= 5])
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
affinitize
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
@ -385,41 +391,40 @@ insert into t_p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,
call dbms_stats.gather_table_stats('test','t_p');
explain basic delete /*+no_use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c2 and t_p.c1 >= 5;
Query Plan
===================================================
|ID|OPERATOR |NAME |
---------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_p4 |
|9 | └─PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
===================================================
======================================================
|ID|OPERATOR |NAME |
------------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─SHARED HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_p4 |
|9 | └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
======================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
table_columns([{t_p: ({t_p: (t_p.c1, t_p.c2, t_p.c3)}), hash_distinct}])
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
dop=4
dop=10
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
equal_conds([t_p.c1 = t_p4.c2]), other_conds(nil)
4 - output([t_p4.c2]), filter(nil), rowset=256
5 - output([t_p4.c2]), filter(nil), rowset=256
6 - output([t_p4.c2]), filter(nil), rowset=256
(#keys=1, [t_p4.c2]), dop=10
dop=10
7 - output([t_p4.c2]), filter(nil), rowset=256
8 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256
access([t_p4.c2]), partitions(p[0-3])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key([t_p4.c1]), range(MIN ; MAX)always true
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
affinitize
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
@ -427,41 +432,40 @@ Outputs & filters:
range_cond([t_p.c1 >= 5])
explain basic delete /*+use_px, parallel(10)*/ t_p from t_p,t_p4 where t_p.c1 = t_p4.c2 and t_p.c1 >= 5;
Query Plan
===================================================
|ID|OPERATOR |NAME |
---------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_p4 |
|9 | └─PX PARTITION HASH JOIN-FILTER|:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
===================================================
======================================================
|ID|OPERATOR |NAME |
------------------------------------------------------
|0 |DISTRIBUTED DELETE | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001|
|3 | └─SHARED HASH JOIN | |
|4 | ├─PART JOIN FILTER CREATE |:BF0000 |
|5 | │ └─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_p4 |
|9 | └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|10| └─TABLE RANGE SCAN |t_p |
======================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
table_columns([{t_p: ({t_p: (t_p.c1, t_p.c2, t_p.c3)}), hash_distinct}])
1 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
2 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
dop=4
dop=10
3 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
equal_conds([t_p.c1 = t_p4.c2]), other_conds(nil)
4 - output([t_p4.c2]), filter(nil), rowset=256
5 - output([t_p4.c2]), filter(nil), rowset=256
6 - output([t_p4.c2]), filter(nil), rowset=256
(#keys=1, [t_p4.c2]), dop=10
dop=10
7 - output([t_p4.c2]), filter(nil), rowset=256
8 - output([t_p4.c2]), filter([t_p4.c2 >= 5]), rowset=256
access([t_p4.c2]), partitions(p[0-3])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key([t_p4.c1]), range(MIN ; MAX)always true
9 - output([t_p.c1], [t_p.c2], [t_p.c3]), filter(nil), rowset=256
affinitize
10 - output([t_p.c1], [t_p.c2], [t_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_p.c1], [t_p.c2], [t_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
@ -1898,23 +1902,22 @@ delete from t_p;
call dbms_stats.gather_table_stats('test','t_p');
explain basic insert /*+no_use_px, parallel(10)*/ into t_p select t_temp_p.c1,t_temp_p.c2,t_temp_p.c3 from t_temp_p,t_temp_p5 where t_temp_p.c1 = t_temp_p5.c1;
Query Plan
==========================================================
|ID|OPERATOR |NAME |
----------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10002 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─HASH JOIN | |
|5 | ├─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000 |
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_temp_p5 |
|9 | └─EXCHANGE IN DISTR | |
|10| └─EXCHANGE OUT DISTR (HASH)|:EX10001 |
|11| └─PX BLOCK ITERATOR | |
|12| └─TABLE FULL SCAN |t_temp_p |
==========================================================
===============================================================
|ID|OPERATOR |NAME |
---------------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─SHARED HASH JOIN | |
|5 | ├─PART JOIN FILTER CREATE |:BF0000 |
|6 | │ └─EXCHANGE IN DISTR | |
|7 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |
|8 | │ └─PX BLOCK ITERATOR | |
|9 | │ └─TABLE FULL SCAN |t_temp_p5 |
|10| └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|11| └─TABLE FULL SCAN |t_temp_p |
===============================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
@ -1930,39 +1933,36 @@ Outputs & filters:
equal_conds([t_temp_p.c1 = t_temp_p5.c1]), other_conds(nil)
5 - output([t_temp_p5.c1]), filter(nil), rowset=256
6 - output([t_temp_p5.c1]), filter(nil), rowset=256
(#keys=1, [t_temp_p5.c1]), dop=10
7 - output([t_temp_p5.c1]), filter(nil), rowset=256
dop=10
8 - output([t_temp_p5.c1]), filter(nil), rowset=256
9 - output([t_temp_p5.c1]), filter(nil), rowset=256
access([t_temp_p5.c1]), partitions(p[0-4])
is_index_back=false, is_global_index=false,
range_key([t_temp_p5.__pk_increment]), range(MIN ; MAX)always true
9 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
10 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
(#keys=1, [t_temp_p.c1]), dop=10
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
12 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_temp_p.__pk_increment]), range(MIN ; MAX)always true
explain basic insert /*+use_px, parallel(10)*/ into t_p select t_temp_p.c1,t_temp_p.c2,t_temp_p.c3 from t_temp_p,t_temp_p5 where t_temp_p.c1 = t_temp_p5.c1;
Query Plan
==========================================================
|ID|OPERATOR |NAME |
----------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10002 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─HASH JOIN | |
|5 | ├─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000 |
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_temp_p5 |
|9 | └─EXCHANGE IN DISTR | |
|10| └─EXCHANGE OUT DISTR (HASH)|:EX10001 |
|11| └─PX BLOCK ITERATOR | |
|12| └─TABLE FULL SCAN |t_temp_p |
==========================================================
===============================================================
|ID|OPERATOR |NAME |
---------------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─SHARED HASH JOIN | |
|5 | ├─PART JOIN FILTER CREATE |:BF0000 |
|6 | │ └─EXCHANGE IN DISTR | |
|7 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |
|8 | │ └─PX BLOCK ITERATOR | |
|9 | │ └─TABLE FULL SCAN |t_temp_p5 |
|10| └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|11| └─TABLE FULL SCAN |t_temp_p |
===============================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
@ -1978,17 +1978,15 @@ Outputs & filters:
equal_conds([t_temp_p.c1 = t_temp_p5.c1]), other_conds(nil)
5 - output([t_temp_p5.c1]), filter(nil), rowset=256
6 - output([t_temp_p5.c1]), filter(nil), rowset=256
(#keys=1, [t_temp_p5.c1]), dop=10
7 - output([t_temp_p5.c1]), filter(nil), rowset=256
dop=10
8 - output([t_temp_p5.c1]), filter(nil), rowset=256
9 - output([t_temp_p5.c1]), filter(nil), rowset=256
access([t_temp_p5.c1]), partitions(p[0-4])
is_index_back=false, is_global_index=false,
range_key([t_temp_p5.__pk_increment]), range(MIN ; MAX)always true
9 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
10 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
(#keys=1, [t_temp_p.c1]), dop=10
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
12 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_temp_p.__pk_increment]), range(MIN ; MAX)always true
@ -2068,23 +2066,22 @@ delete from t_p;
call dbms_stats.gather_table_stats('test','t_p');
explain basic insert /*+use_px, parallel(10)*/ into t_p select t_temp_p.c1, t_temp_p.c2, t_temp_p.c3 from t_temp_p, t_temp_p4 where t_temp_p.c1 = t_temp_p4.c1;
Query Plan
==========================================================
|ID|OPERATOR |NAME |
----------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10002 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─HASH JOIN | |
|5 | ├─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000 |
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |t_temp_p4 |
|9 | └─EXCHANGE IN DISTR | |
|10| └─EXCHANGE OUT DISTR (HASH)|:EX10001 |
|11| └─PX BLOCK ITERATOR | |
|12| └─TABLE FULL SCAN |t_temp_p |
==========================================================
===============================================================
|ID|OPERATOR |NAME |
---------------------------------------------------------------
|0 |DISTRIBUTED INSERT | |
|1 |└─PX COORDINATOR | |
|2 | └─EXCHANGE OUT DISTR |:EX10001 |
|3 | └─SUBPLAN SCAN |ANONYMOUS_VIEW1|
|4 | └─SHARED HASH JOIN | |
|5 | ├─PART JOIN FILTER CREATE |:BF0000 |
|6 | │ └─EXCHANGE IN DISTR | |
|7 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |
|8 | │ └─PX BLOCK ITERATOR | |
|9 | │ └─TABLE FULL SCAN |t_temp_p4 |
|10| └─PX BLOCK HASH JOIN-FILTER |:BF0000 |
|11| └─TABLE FULL SCAN |t_temp_p |
===============================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
@ -2100,17 +2097,15 @@ Outputs & filters:
equal_conds([t_temp_p.c1 = t_temp_p4.c1]), other_conds(nil)
5 - output([t_temp_p4.c1]), filter(nil), rowset=256
6 - output([t_temp_p4.c1]), filter(nil), rowset=256
(#keys=1, [t_temp_p4.c1]), dop=10
7 - output([t_temp_p4.c1]), filter(nil), rowset=256
dop=10
8 - output([t_temp_p4.c1]), filter(nil), rowset=256
9 - output([t_temp_p4.c1]), filter(nil), rowset=256
access([t_temp_p4.c1]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_temp_p4.__pk_increment]), range(MIN ; MAX)always true
9 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
10 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
(#keys=1, [t_temp_p.c1]), dop=10
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
12 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), filter(nil), rowset=256
11 - output([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3], [PARTITION_ID]), filter(nil), rowset=256
access([t_temp_p.c1], [t_temp_p.c2], [t_temp_p.c3]), partitions(p[0-3])
is_index_back=false, is_global_index=false,
range_key([t_temp_p.__pk_increment]), range(MIN ; MAX)always true

View File

@ -73,9 +73,9 @@ Query Plan
============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------
|0 |PX COORDINATOR | |26 |69 |
|1 |└─EXCHANGE OUT DISTR |:EX10001|26 |43 |
|2 | └─NESTED-LOOP JOIN | |26 |14 |
|0 |PX COORDINATOR | |26 |68 |
|1 |└─EXCHANGE OUT DISTR |:EX10001|26 |42 |
|2 | └─NESTED-LOOP JOIN | |26 |12 |
|3 | ├─PX BLOCK ITERATOR | |28 |6 |
|4 | │ └─TABLE FULL SCAN |score |28 |6 |
|5 | └─MATERIAL | |1 |7 |