select /*+parallel(a,4)*/ a.employee_id,b.department_id,b.location_id,c.job_title
from employees a,departments b,jobs c
where a.department_id=b.department_id and a.job_id=c.job_id;
执行计划
----------------------------------------------------------
Plan hash value: 2161488168
----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | TQ |IN-OUT| PQ
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1949G| 88T| | 10M (90)| 34:49:44 | | | |
| 1 | PX COORDINATOR | | | | | | | | | |
| 2 | PX SEND QC (RANDOM) |
Q10003 | 1949G| 88T| | 10M (90)| 34:49:44 | Q1,03 | |* 3 | HASH JOIN BUFFERED | | 1949G| 88T| 960K| 10M (90)| 34:49:44 | Q1,03 | PCWP
| 4 | BUFFER SORT | | | | | | | Q1,03 | PCWC | |
| 5 | PX RECEIVE | | 100K| 2636K| | 1005 (1)| 00:00:13 | Q1,03 | PCWP |
| 6 | PX SEND HASH |
Q10001 | 100K| 2636K| | 1005 (1)| 00:00:13 | | | 7 | TABLE ACCESS FULL | JOBS | 100K| 2636K| | 1005 (1)| 00:00:13 | |
| 8 | PX RECEIVE | | 370M| 8123M| | 2723 (66)| 00:00:33 | Q1,03 | PCWP |
| 9 | PX SEND HASH |
Q10002 | 370M| 8123M| | 2723 (66)| 00:00:33 | Q1,02 | 10 | MERGE JOIN | | 370M| 8123M| | 2723 (66)| 00:00:33 | Q1,02 | PCWP |
| 11 | BUFFER SORT | | | | | | | Q1,02 | PCWC | |
| 12 | PX RECEIVE | | 100K| 683K| | 2 (0)| 00:00:01 | Q1,02 | PCWP | |
| 13 | PX SEND BROADCAST |
Q10000 | 100K| 683K| | 2 (0)| 00:00:01 | | S->| 14 | TABLE ACCESS BY INDEX ROWID| DEPARTMENTS | 100K| 683K| | 2 (0)| 00:00:01 |
| 15 | INDEX FULL SCAN | DEPT_ID_PK | 100K| | | 1 (0)| 00:00:01 | | |
|* 16 | SORT JOIN | | 100K| 1562K| 5512K| 954 (1)| 00:00:12 | Q1,02 | PCWP
| 17 | PX BLOCK ITERATOR | | 100K| 1562K| | 280 (1)| 00:00:04 | Q1,02 | PCWC |
| 18 | TABLE ACCESS FULL | EMPLOYEES | 100K| 1562K| | 280 (1)| 00:00:04 | Q1,02
----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("A"."JOB_ID"="C"."JOB_ID")
16 - access("A"."DEPARTMENT_ID"="B"."DEPARTMENT_ID")
filter("A"."DEPARTMENT_ID"="B"."DEPARTMENT_ID")
这里我只对employees表指定并行度,为何oracle对departments和jobs表也会采用并行执行?是否可以认为是:只要查询的一个源表采用并行,其余的表自动会采用并行?
