如何解析oracle执行计划
2023-09-11 14:16:42 时间
要执行任何SQL语句,Oracle 必须推导出一个“执行计划”。查询的执行计划是 Oracle 将如何实现数据的检索,以满足给定 SQL 语句的描述。它只不过是其中包含的步骤及它们之间关系的顺序树。
执行计划树的基本规则如下:
执行计划将包含一个根,没有父(操作)
父(操作)可以有一个或更多的子(操作),其ID将小于子(操作)ID
一子(操作)可只有一个父(操作),显示时右缩进;含许多子(操作)时,缩进相同
下面是一个执行计划示例。
SQL> explain plan for
2 select e.empno, e.ename, d.dname
3 from emp e, dept d
4 where e.deptno = d.deptno
5 and e.deptno = 10;
Explained.
SQL> SELECT * FROM table(dbms_xplan.display(null,null,'basic'));
PLAN_TABLE_OUTPUT
------------------------------------------------
Plan hash value: 568005898
------------------------------------------------
| Id | Operation | Name |
------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | NESTED LOOPS | |
| 2 | TABLE ACCESS BY INDEX ROWID| DEPT |
| 3 | INDEX UNIQUE SCAN | PK_DEPT |
| 4 | TABLE ACCESS FULL | EMP |
------------------------------------------------
使用上述的规则,可以说:
操作0是树的根,它有一个子操作,即操作1
操作1有两个子操作,即操作2和4
操作2有一子操作,即操作3
下面是执行计划的图形表示。如果解读该树:为执行操作1,需执行操作2和4;操作2先完成;为执行2,需执行其子操作3;为执行操作4,需执行操作2。
Operation 0
(SELECT STATEMENT)
|
|
|
Operation 1
(NESTED LOOPS)
/\
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Operation 2 Operation 4
(TABLE ACCESS (TABLE ACCESS FULL)
BY INDEX ROWID)
|
|
|
Operation 3
(INDEX UNIQUE SCAN)
操作3访问DEPT表,使用 INDEX UNIQUE SCAN,并传递ROWID给操作2
操作2从DEPT表返回所有行给操作1
操作1对操作2返回的每一行执行操作4
操作4执行全表扫描(TABLE ACCESS FULL),应用过滤器E. DEPTNO = 10,返回结果行给操作1
操作1返回最后结果给操作0
相关文章
- Oracle 11g导出空表、少表的解决办法
- Oracle数据库使用出现错误-状态: 失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
- System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”
- 【Oracle】如何查看sql 执行计划的历史变更
- 【Oracle】Oracle 11gR2发布11.2.0.3 Patchset补丁集
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——DeptDao层代码
- 《oracle每日一练》Oracle DBLink连接数过多的问题(Ora-02020)
- oracle:查看sql执行计划 explain PLAN FOR
- 查看ORACLE的实际执行计划
- oracle数据库执行脚本常用命令总结
- Unable to acquire Oracle environment handle 问题的解决
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
- PostgreSQL 自带自增字段 请勿使用触发器或其他手段生成(Like Oracle, MySQL)
- oracle通过job定时执行任务
- Oracle数据库导出
- PostgreSQL Oracle兼容性之 - 锁定执行计划(Outline system)
- Oracle 11g 053 使用 RMAN 执行恢复
- 解密 Oracle 数据库 SQL 执行历史:掌握多种实现方式,轻松实现 SQL 监控与性能优化