是不是最里面往外面看,最里面的先执行,然后同级别的话,从后向前的顺序执行扫描
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 2 | 1272 | 15 (67)| 00:00:01 |
| 1 | LOAD TABLE CONVENTIONAL | RPT_VOD_CATEGORY_TEMP | | | | |
| 2 | SORT UNIQUE | | 2 | 1272 | 15 (67)| 00:00:01 |
| 3 | UNION-ALL | | | | | |
|* 4 | HASH JOIN | | 1 | 570 | 6 (17)| 00:00:01 |
| 5 | TABLE ACCESS FULL | TBL_IPTV_VOD | 1 | 260 | 2 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | RPT_CONTENT_CATEGORY | 551 | 166K| 3 (0)| 00:00:01 |
|* 7 | HASH JOIN | | 1 | 702 | 8 (13)| 00:00:01 |
| 8 | MERGE JOIN CARTESIAN| | 1 | 570 | 5 (0)| 00:00:01 |
| 9 | TABLE ACCESS FULL | TBL_IPTV_VOD | 1 | 260 | 2 (0)| 00:00:01 |
| 10 | BUFFER SORT | | 551 | 166K| 3 (0)| 00:00:01 |
| 11 | TABLE ACCESS FULL | RPT_CONTENT_CATEGORY | 551 | 166K| 3 (0)| 00:00:01 |
| 12 | TABLE ACCESS FULL | TBL_VOD_MAPPING | 1 | 132 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("X"."FOREIGNSN"="Y"."CONTENT_ID")
7 - access("A"."FOREIGNSN"="B"."VODID" AND "B"."PARENT_VODID"="C"."CONTENT_ID")
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 2 | 1272 | 15 (67)| 00:00:01 |
| 1 | LOAD TABLE CONVENTIONAL | RPT_VOD_CATEGORY_TEMP | | | | |
| 2 | SORT UNIQUE | | 2 | 1272 | 15 (67)| 00:00:01 |
| 3 | UNION-ALL | | | | | |
|* 4 | HASH JOIN | | 1 | 570 | 6 (17)| 00:00:01 |
| 5 | TABLE ACCESS FULL | TBL_IPTV_VOD | 1 | 260 | 2 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | RPT_CONTENT_CATEGORY | 551 | 166K| 3 (0)| 00:00:01 |
|* 7 | HASH JOIN | | 1 | 702 | 8 (13)| 00:00:01 |
| 8 | MERGE JOIN CARTESIAN| | 1 | 570 | 5 (0)| 00:00:01 |
| 9 | TABLE ACCESS FULL | TBL_IPTV_VOD | 1 | 260 | 2 (0)| 00:00:01 |
| 10 | BUFFER SORT | | 551 | 166K| 3 (0)| 00:00:01 |
| 11 | TABLE ACCESS FULL | RPT_CONTENT_CATEGORY | 551 | 166K| 3 (0)| 00:00:01 |
| 12 | TABLE ACCESS FULL | TBL_VOD_MAPPING | 1 | 132 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("X"."FOREIGNSN"="Y"."CONTENT_ID")
7 - access("A"."FOREIGNSN"="B"."VODID" AND "B"."PARENT_VODID"="C"."CONTENT_ID")
----------------------------------------------------------
0 **SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248)
1 0 **HASH JOIN (Cost=3 Card=8 Bytes=248)
2 1 ****TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=3 Bytes=36)
3 1 ****TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=16 Bytes=304)左侧的两排数据,前面的是序列号ID,后面的是对应的PID(父ID)。A shortened summary of this is:
Execution starts with ID=0: SELECT STATEMENT but this is dependand on it's child objects
So it executes its first child step: ID=1 PID=0 HASH JOIN but this is dependand on it's child objects
So it executes its first child step: ID=2 PID=1 TABLE ACCESS (FULL) OF 'DEPT'
Then the second child step: ID=3 PID=2 TABLE ACCESS (FULL) OF 'EMP'
Rows are returned to the parent step(s) until finished