How to understand "union" and "group by" of "explain plan" ?
I'm comparing the performance between "left outer join" and "not exists" . I get the "explain plan" from "query_plan_profiles" .
But I don't understand some key words .
SQL:
insert into t3
select t1.*
from t1
where not exists (
select 1 from t2 where t1.bk = t2.bk
);
Explain Plan:
+-DML INSERT [Cost: 0, Rows: 0]
| Target Projection: v10poc.t3_b1 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b1 (RESEGMENT)
| Target Projection: v10poc.temp_plan_exists_b1 (RESEGMENT)
| Target Projection: v10poc.t3_b0 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b0 (RESEGMENT)
| Target Projection: v10poc.temp_plan_exists_b0 (RESEGMENT)
| Target Prep:
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| +---> JOIN HASH [Semi] [Cost: 42K, Rows: 1 (NO STATISTICS)] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| +---> JOIN MERGEJOIN(inputs presorted) [Anti] [Cost: 14M, Rows: 11M] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| | Join Cond: (query_plan_profiles.transaction_id = VAL(2))
| | Join Cond: (t1.bk = VAL(1))
| | Execute on: All Nodes
| | +-- Outer -> SELECT [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 4)
| | +-- Outer -> STORAGE ACCESS for t1 [Cost: 549K, Rows: 23M] (PATH ID: 4)
| | | Execute on: All Nodes
| | | Projection: v10poc.t1_b0
| | | Materialize: t1.bk, t1.msg1, t1.msg2
| | | Execute on: All Nodes
| | | +---> STORAGE ACCESS for t2 [Cost: 389K, Rows: 23M] (PATH ID: 6)
| | | | +---> UNION [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 6)
| | | | Projection: v10poc.t2_b0
| | | | | Execute on: All Nodes
| | | | Materialize: t2.bk
| | | | | Execute on: All Nodes
| | | | Execute on: All Nodes
SQL:
insert into t4
select t11.*
from t11
left join t22
on (t11.bk = t22.bk)
where t22.msg1 is null
Explain Plan:
+-DML INSERT [Cost: 0, Rows: 0]
| Target Projection: v10poc.t4_b1 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b1 (RESEGMENT)
| Target Projection: v10poc.temp_plan_left_b1 (RESEGMENT)
| Target Projection: v10poc.t4_b0 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b0 (RESEGMENT)
| Target Projection: v10poc.temp_plan_left_b0 (RESEGMENT)
| Target Prep:
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| +---> JOIN HASH [Semi] [Cost: 42K, Rows: 1 (NO STATISTICS)] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| +---> JOIN MERGEJOIN(inputs presorted) [LeftOuter] [Cost: 16M, Rows: 23M] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| | Join Cond: (query_plan_profiles.transaction_id = VAL(2))
| | Join Cond: (t11.bk = t22.bk)
| | Execute on: All Nodes
| | Filter: (t22.msg1 IS NULL)
| | Execute on: All Nodes
| | +-- Outer -> SELECT [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 4)
| | +-- Outer -> STORAGE ACCESS for t11 [Cost: 2M, Rows: 23M] (PATH ID: 4)
| | | Execute on: All Nodes
| | | Projection: v10poc.t11_b0
| | | Materialize: t11.bk, t11.msg1, t11.msg2
| | | Execute on: All Nodes
| | +-- Inner -> STORAGE ACCESS for t22 [Cost: 966K, Rows: 23M] (PATH ID: 5)
| | | +---> GROUPBY HASH (SORT OUTPUT) (GLOBAL RESEGMENT GROUPS) (LOCAL RESEGMENT GROUPS) [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 5)
| | | Projection: v10poc.t22_b0
"| | | | Group By:
""*SELECT* 1"".transaction_id, ""*SELECT* 1"".statement_id, ""*SELECT* 1"".path_id, ""*SELECT* 1"".path_line_index,
""*SELECT* 1"".path_is_started, ""*SELECT* 1"".path_is_completed, ""*SELECT* 1"".is_executing, ""*SELECT* 1"".running_time,
""*SELECT* 1"".memory_allocated_bytes, ""*SELECT* 1"".read_from_disk_bytes, ""*SELECT* 1"".received_bytes, ""*SELECT* 1"".sent_bytes, ""*SELECT* 1"".path_line"
| | | Materialize: t22.bk, t22.msg1
| | | | Execute on: All Nodes
| | | Execute on: All Nodes
So, could you explain what's the meaning of "union" and "group by" ?
But I don't understand some key words .
SQL:
insert into t3
select t1.*
from t1
where not exists (
select 1 from t2 where t1.bk = t2.bk
);
Explain Plan:
+-DML INSERT [Cost: 0, Rows: 0]
| Target Projection: v10poc.t3_b1 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b1 (RESEGMENT)
| Target Projection: v10poc.temp_plan_exists_b1 (RESEGMENT)
| Target Projection: v10poc.t3_b0 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b0 (RESEGMENT)
| Target Projection: v10poc.temp_plan_exists_b0 (RESEGMENT)
| Target Prep:
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| +---> JOIN HASH [Semi] [Cost: 42K, Rows: 1 (NO STATISTICS)] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| +---> JOIN MERGEJOIN(inputs presorted) [Anti] [Cost: 14M, Rows: 11M] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| | Join Cond: (query_plan_profiles.transaction_id = VAL(2))
| | Join Cond: (t1.bk = VAL(1))
| | Execute on: All Nodes
| | +-- Outer -> SELECT [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 4)
| | +-- Outer -> STORAGE ACCESS for t1 [Cost: 549K, Rows: 23M] (PATH ID: 4)
| | | Execute on: All Nodes
| | | Projection: v10poc.t1_b0
| | | Materialize: t1.bk, t1.msg1, t1.msg2
| | | Execute on: All Nodes
| | | +---> STORAGE ACCESS for t2 [Cost: 389K, Rows: 23M] (PATH ID: 6)
| | | | +---> UNION [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 6)
| | | | Projection: v10poc.t2_b0
| | | | | Execute on: All Nodes
| | | | Materialize: t2.bk
| | | | | Execute on: All Nodes
| | | | Execute on: All Nodes
SQL:
insert into t4
select t11.*
from t11
left join t22
on (t11.bk = t22.bk)
where t22.msg1 is null
Explain Plan:
+-DML INSERT [Cost: 0, Rows: 0]
| Target Projection: v10poc.t4_b1 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b1 (RESEGMENT)
| Target Projection: v10poc.temp_plan_left_b1 (RESEGMENT)
| Target Projection: v10poc.t4_b0 (RESEGMENT)
| Target Projection: v10poc.temp_msg_b0 (RESEGMENT)
| Target Projection: v10poc.temp_plan_left_b0 (RESEGMENT)
| Target Prep:
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| Execute on: Query Initiator
| Execute on: All Nodes
| +---> JOIN HASH [Semi] [Cost: 42K, Rows: 1 (NO STATISTICS)] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| +---> JOIN MERGEJOIN(inputs presorted) [LeftOuter] [Cost: 16M, Rows: 23M] (PATH ID: 3) Outer (RESEGMENT) Inner (RESEGMENT)
| | Join Cond: (query_plan_profiles.transaction_id = VAL(2))
| | Join Cond: (t11.bk = t22.bk)
| | Execute on: All Nodes
| | Filter: (t22.msg1 IS NULL)
| | Execute on: All Nodes
| | +-- Outer -> SELECT [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 4)
| | +-- Outer -> STORAGE ACCESS for t11 [Cost: 2M, Rows: 23M] (PATH ID: 4)
| | | Execute on: All Nodes
| | | Projection: v10poc.t11_b0
| | | Materialize: t11.bk, t11.msg1, t11.msg2
| | | Execute on: All Nodes
| | +-- Inner -> STORAGE ACCESS for t22 [Cost: 966K, Rows: 23M] (PATH ID: 5)
| | | +---> GROUPBY HASH (SORT OUTPUT) (GLOBAL RESEGMENT GROUPS) (LOCAL RESEGMENT GROUPS) [Cost: 41K, Rows: 2 (NO STATISTICS)] (PATH ID: 5)
| | | Projection: v10poc.t22_b0
"| | | | Group By:
""*SELECT* 1"".transaction_id, ""*SELECT* 1"".statement_id, ""*SELECT* 1"".path_id, ""*SELECT* 1"".path_line_index,
""*SELECT* 1"".path_is_started, ""*SELECT* 1"".path_is_completed, ""*SELECT* 1"".is_executing, ""*SELECT* 1"".running_time,
""*SELECT* 1"".memory_allocated_bytes, ""*SELECT* 1"".read_from_disk_bytes, ""*SELECT* 1"".received_bytes, ""*SELECT* 1"".sent_bytes, ""*SELECT* 1"".path_line"
| | | Materialize: t22.bk, t22.msg1
| | | | Execute on: All Nodes
| | | Execute on: All Nodes
So, could you explain what's the meaning of "union" and "group by" ?
Sign up
Already have an account? Login
Welcome to the Rocket Forum!
Please log in or register:
Employee Login | Registration Member Login | RegistrationEnter your E-mail address. We'll send you an e-mail with instructions to reset your password.