ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 执行计划的执行顺序精解(1)

执行计划的执行顺序精解(1)

原创 Linux操作系统 作者:www_xylove 时间:2013-08-04 11:18:08 0 删除 编辑

执行计划的执行顺序精解

阅读执行计划的规则:

1. 缩进最深的,最先执行

2. 缩进深度相同的,先上后下

举例说明:

需要注意的是,这里使用解释执行计划来举例说明

解释执行计划

explain plan for

select * from hr.employees a,hr.departments b,hr.jobs c,hr.locations d

where a.department_id = b.department_id

and   a.job_id = c.job_id

and   b.location_id = d.location_id

and   b.department_id = 30;

 

已解释。

 

获得解释执行计划

select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT

---------------------------------------------------------------------

Plan hash value: 706249465

---------------------------------------------------------------------| Id  | Operation                      | Name        | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------

|   0 | SELECT STATEMENT               |             |     6 |  1032 |     9  (12)| 00:00:01 |

|*  1 |  HASH JOIN                     |             |     6 |  1032 |     9  (12)| 00:00:01 |

|   2 |   NESTED LOOPS                 |             |     6 |   834 |     5   (0)| 00:00:01 |

|   3 |    NESTED LOOPS                |             |     1 |    70 |     2   (0)| 00:00:01 |

|   4 |     TABLE ACCESS BY INDEX ROWID| DEPARTMENTS |     1 |    21 |     1   (0)| 00:00:01 |

|*  5 |      INDEX UNIQUE SCAN         | DEPT_ID_PK  |     1 |       |     0   (0)| 00:00:01 |

|   6 |     TABLE ACCESS BY INDEX ROWID| LOCATIONS   |    23 |  1127 |     1   (0)| 00:00:01 |

|*  7 |      INDEX UNIQUE SCAN         | LOC_ID_PK   |     1 |       |     0   (0)| 00:00:01 |

|*  8 |    TABLE ACCESS FULL           | EMPLOYEES   |     6 |   414 |     3   (0)| 00:00:01 |

|   9 |   TABLE ACCESS FULL            | JOBS        |    19 |   627 |     3   (0)| 00:00:01 |

---------------------------------------------------------------------

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   1 - access("A"."JOB_ID"="C"."JOB_ID")

   5 - access("B"."DEPARTMENT_ID"=30)

   7 - access("B"."LOCATION_ID"="D"."LOCATION_ID")

   8 - filter("A"."DEPARTMENT_ID"=30)

 

 

已选择24行。

为了看清缩进关系,我特地把这ID,Operation,Name列单独拿出来显示。

 

Id  | Operation                      | Name       

----------------------------------------------------

   0 | SELECT STATEMENT               |            

*  1 |  HASH JOIN                     |            

   2 |   NESTED LOOPS                 |            

   3 |    NESTED LOOPS                |            

   4 |     TABLE ACCESS BY INDEX ROWID| DEPARTMENTS

*  5 |      INDEX UNIQUE SCAN         | DEPT_ID_PK 

   6 |     TABLE ACCESS BY INDEX ROWID| LOCATIONS  

*  7 |      INDEX UNIQUE SCAN         | LOC_ID_PK  

*  8 |    TABLE ACCESS FULL           | EMPLOYEES  

   9 |   TABLE ACCESS FULL            | JOBS       

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21266384/viewspace-767734/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-12

  • 博文量
    99
  • 访问量
    223330