在SQL语句的执行计划中,包含很多字段项和很多模块,其不同字段代表了不同的含义且在不同的情形下某些字段、模块显示或不显示,下
面的描述给出了执行计划中各字段的含义以及各模块的描述。

有关执行计划中各字段模块的描述请参考: 执行计划中各字段各模块描述
       有关由SQL语句来获取执行计划请参考:    使用 EXPLAIN PLAN 获取SQL语句执行计划
       有关使用autotrace来获取执行计划请参考:启用 AUTOTRACE 功能
       有关display_cursor函数的使用请参考:   dbms_xplan之display_cursor函数的使用

一、执行计划中各字段的描述
  1、基本字段(总是可用的)
       Id                 执行计划中每一个操作(行)的标识符。如果数字前面带有星号,意味着将在随后提供这行包含的谓词信息
       Operation  对应执行的操作。也叫行源操作
       Name        操作的对象名称
  
  2、查询优化器评估信息
       Rows(E-Rows)      预估操作返回的记录条数
       Bytes(E-Bytes)       预估操作返回的记录字节数
       TempSpc                预估操作使用临时表空间的大小
       Cost(%CPU)          预估操作所需的开销。在括号中列出了CPU开销的百分比。注意这些值是通过执行计划计算出来的。换句话说,父操作的开销包含子操作的开销
       Time                        预估执行操作所需要的时间(HH:MM:SS)
  
  3、分区(仅当访问分区表时下列字段可见)
       Pstart      访问的第一个分区。如果解析时不知道是哪个分区就设为KEY,KEY(I),KEY(MC),KEY(OR),KEY(SQ)
       Pstop      访问的最后一个分区。如果解析时不知道是哪个分区就设为KEY,KEY(I),KEY(MC),KEY(OR),KEY(SQ)
  
  4、并行和分布式处理(仅当使用并行或分布式操作时下列字段可见)
       Inst                在分布式操作中,指操作使用的数据库链接的名字
       TQ                 在并行操作中,用于从属线程间通信的表队列
       IN-OUT         并行或分布式操作间的关系
       PQ Distrib    在并行操作中,生产者为发送数据给消费者进行的分配
  
  5、运行时统计(当设定参数statistics_level为all或使用gather_plan_statistics提示时,下列字段可见)
       Starts       指定操作执行的次数
       A-Rows   操作返回的真实记录数
       A-Time    操作执行的真实时间(HH:MM:SS.FF)
  
  6、I/O 统计(当设定参数statistics_level为all或使用gather_plan_statistics提示时,下列字段可见)
       Buffers    执行期间进行的逻辑读操作数量
       Reads    执行期间进行的物理读操作数量
       Writes     执行期间进行的物理写操作数量        
  
  7、内存使用统计
       OMem             最优执行所需内存的预估值
       1Mem              一次通过(one-pass)执行所需内存的预估值
       0/1/M               最优/一次通过/多次通过(multipass)模式操作执行的次数
       Used-Mem    最后一次执行时操作使用的内存量
       Used-Tmp     最后一次执行时操作使用的临时空间大小。这个字段必须扩大1024倍才能和其他衡量内存的字段一致(比如,32k意味着32MB)
       Max-Tmp       操作使用的最大临时空间大小。这个字段必须扩大1024倍才能和其他衡量内存的字段一致(比如,32k意味着32MB)

二、执行计划中各模块的描述与举例
  1、预估的执行计划中的各字段与模块

SQL> explain plan for 2 select * from emp e,dept d 3 where e.deptno=d.deptno 4 and e.ename='SMITH'; Explained. /**************************************************/   /* Author: Robinson Cheng                         */   /* Blog:   http://blog.csdn.net/robinson_0612     */   /* MSN:    robinson_0612@hotmail.com              */   /* QQ:     645746311                              */   /**************************************************/ SQL> set linesize 180 SQL> set pagesize 0 SQL> select * from table(dbms_xplan.display(null,null,'advanced')); --使用dbms_xplan.display函数获得语句的执行计划 Plan hash value: 351108634 --SQL语句的哈希植 ---------------------------------------------------------------------------------------- /*执行计划部分*/ | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 117 | 4 (0)| 00:00:01 | | 1 | NESTED LOOPS | | 1 | 117 | 4 (0)| 00:00:01 | |* 2 | TABLE ACCESS FULL | EMP | 1 | 87 | 3 (0)| 00:00:01 | | 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 30 | 1 (0)| 00:00:01 | |* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 | ---------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): --这部分显示的为查询块名和对象别名 ------------------------------------------------------------- 1 - SEL$1 --SEL$为select 的缩写,位于块1,相应的还有DEL$,INS$,UPD$等 2 - SEL$1 / E@SEL$1 --E@SEL$1,对应到执行计划中的操作ID为2上,即在表E上的查询,E为别名,下面类同 3 - SEL$1 / D@SEL$1 4 - SEL$1 / D@SEL$1 Outline Data --提纲部分,这部分将执行计划中的图形化方式以文本形式来呈现,即转换为提示符方式 ------------- /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$1" "D"@"SEL$1") --使用USE_NL提示,即嵌套循环 LEADING(@"SEL$1" "E"@"SEL$1" "D"@"SEL$1") --指明前导表 INDEX_RS_ASC(@"SEL$1" "D"@"SEL$1" ("DEPT"."DEPTNO")) --指明对于D上的访问方式为使用索引 FULL(@"SEL$1" "E"@"SEL$1") --指明对于E上的访问方式为全表扫描 OUTLINE_LEAF(@"SEL$1") ALL_ROWS OPTIMIZER_FEATURES_ENABLE('10.2.0.3') IGNORE_OPTIM_EMBEDDED_HINTS END_OUTLINE_DATA */ Predicate Information (identified by operation id): --谓词信息部分,在执行计划中ID带有星号的每一行均对应到下面中的一行 --------------------------------------------------- 2 - filter("E"."ENAME"='SMITH') 4 - access("E"."DEPTNO"="D"."DEPTNO") Column Projection Information (identified by operation id): --执行时每一步骤所返回的列,下面的不同步骤返回了不同的列 ----------------------------------------------------------- 1 - (#keys=0) "E"."EMPNO"[NUMBER,22], "E"."ENAME"[VARCHAR2,10], "E"."JOB"[VARCHAR2,9], "E"."MGR"[NUMBER,22], "E"."HIREDATE"[DATE,7], "E"."SAL"[NUMBER,22], "E"."COMM"[NUMBER,22], "E"."DEPTNO"[NUMBER,22], "D"."DEPTNO"[NUMBER,22], "D"."DNAME"[VARCHAR2,14], "D"."LOC"[VARCHAR2,13] 2 - "E"."EMPNO"[NUMBER,22], "E"."ENAME"[VARCHAR2,10], "E"."JOB"[VARCHAR2,9], "E"."MGR"[NUMBER,22], "E"."HIREDATE"[DATE,7], "E"."SAL"[NUMBER,22], "E"."COMM"[NUMBER,22], "E"."DEPTNO"[NUMBER,22] 3 - "D"."DEPTNO"[NUMBER,22], "D"."DNAME"[VARCHAR2,14], "D"."LOC"[VARCHAR2,13] 4 - "D".ROWID[ROWID,10], "D"."DEPTNO"[NUMBER,22] Note --注释与描述部分,下面的描述中给出了本次SQL语句使用了动态采样功能 ----- - dynamic sampling used for this statement 58 rows selected.

2、实际执行计划中的各字段与模块

SQL> select /*+ gather_plan_statistics */ * --注意此处增加了提示gather_plan_statistics并且该语句被执行 2 from emp e,dept d 3 where e.deptno=d.deptno 4 and e.ename='SMITH'; 7369 SMITH CLERK 7902 17-DEC-80 800 20 20 RESEARCH DALLAS SQL> select * from table(dbms_xplan.display_cursor(null,null,'iostats last')); --使用display_cursor获取实际的执行计划 SQL_ID fpx7zw59f405d, child number 0 --这部分给出了SQL语句的SQL_ID,子游标号以及原始的SQL语句 ------------------------------------- select /*+ gather_plan_statistics */ * from emp e,dept d where e.deptno=d.deptno and e.ename='SMITH' Plan hash value: 351108634 --SQL 语句的哈希值 --SQL语句的执行计划,可以看到下面显示的字段一部分不同于预估执行计划中的字段 ----------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | ----------------------------------------------------------------------------------------------------------- | 1 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 10 | 1 | |* 2 | TABLE ACCESS FULL | EMP | 1 | 1 | 1 |00:00:00.01 | 8 | 0 | | 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 1 | 1 |00:00:00.01 | 2 | 1 | |* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | 1 | 1 |00:00:00.01 | 1 | 1 | ----------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("E"."ENAME"='SMITH') 4 - access("E"."DEPTNO"="D"."DEPTNO") Note ----- - dynamic sampling used for this statement 26 rows selected.

三、总结
  由上可知,在不同的情形下可以获得执行计划的不同信息,而不同信息则展现了SQL语句对应的不同情况,因此应根据具体的情形具体分析。

执行计划中各字段各模块描述相关推荐

  1. 浅析SQL SERVER执行计划中的各类怪相

    在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...

  2. sql server运算符_SQL Server执行计划中SELECT运算符的主要概念

    sql server运算符 One of the main responsibilities of a database administrator is query tuning and troub ...

  3. SQL Server 2000中的并行处理和执行计划中的位图运算符

    SQL Server 2000中的并行处理和执行计划中的位图运算符 摘抄自:SQLServer 2000并行处理和位图简介 刘志斌 并行查询介绍 Degree of Parallelism(并行度) ...

  4. oracle 计划中的view,为何执行计划中会出现个VIEW: VM_NWVW_1 ?

    为何执行计划中会出现个VIEW:  VM_NWVW_1 ? 数据库中根本没有这个OBJECT. 也不象系统自己产生的! SELECT R.CREATED_OFFICE STOCK_CODE, R.CU ...

  5. 执行计划中的参数解释

    执行计划中的各个参数解释: 一.Recursive calls (递归调用) 1.参考:Oracle Database Reference, 10g Release 2 (10.2).pdf第916页 ...

  6. SQL Server 2008处理隐式数据类型转换在执行计划中的增强

    关注我们获得更多内容 作者 | 邹建,资深数据库专家,精通各项 SQL Server 技术,具有丰富的管理.维护.优化能力以及业务应用经验.他一直热心于技术知识的分享.传播,持续活跃在 CSDN 和 ...

  7. 【转自杨建荣博客】通过执行计划中的CONCATENATION分析sql问题

    转自: http://blog.itpub.net/23718752/viewspace-1403180/ 昨天开发的一个同事找到我,说写了一条sql语句,但是执行了半个小时还没有执行完,想让我帮忙看 ...

  8. mysql执行计划中性能最差的是_面试中:mysql性能调优-执行计划explain

    mysql的sql调优大家都不陌生,可是调优前都会先看下执行计划,这个是必须的. 插播图片: explain 这个是关键字执行如下: explain select * from user 结果如下: ...

  9. mysql执行计划中 性能最好_MySQL性能优化-explain执行计划

    explain用于获取查询执行计划信息, 一.语法 只需要在select前加上explain即可,如: mysql> explain select 1; +----+-------------+ ...

最新文章

  1. 监听Activity的生命周期的方式。
  2. Redis实现分布式Session管理
  3. 2015 Spark 将走向哪里?
  4. this到底指向哪里
  5. C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】
  6. 一组匹配中国大陆手机号的正则表达式
  7. python学习笔记——Day 3
  8. 唐骏:毕业5年决定你的命运
  9. MYSQL的空间查询
  10. docker安装zabbix怎样修改图标和登录页文字
  11. .net\C#基于zxing的彩色、Logo二维码生成---随笔
  12. 麻省理工学院:科技宠儿的摇篮
  13. java 月份适配计算_Java8中的时间日期API这么好用,你居然还没有掌握?
  14. react项目中遇到的几个问题
  15. 贪心算法之 活动安排(Java代码实现)
  16. 镁客网每周硬科技领域投融资汇总(2.24-3.2),地平线机器人晋升估值最高的AI芯片独角兽...
  17. 【Android】短信应用——短信截获
  18. 【项目】工艺品展示系统——数据库设计
  19. Pytorch 深度学习实战 ‘cannot import name ‘BytesType‘ from ‘diskcache.core‘
  20. 想看东北四字成语么?东北专用!!!

热门文章

  1. php数据库缓存实现原理,PHP那些事:数据库缓存原理
  2. 三十六進制之間隨便轉換
  3. Ubuntu上通过FinalShell或Asbru访问CentOS虚拟机
  4. 《天天数学》连载02:一月二日
  5. 伪元素before、after示例
  6. 【HNOI2004】【codevs1256】【BZOJ1207】打鼹鼠,小小DP
  7. 怎样下载python模块sublime text3中_python安装环境配置、python模块添加、sublime text编辑器配置...
  8. 2017.10.16 水管局长水管局长数据加强版 思考记录
  9. 杨辉三角、组合数 性质的探究
  10. 查看linux内存优化,Linux性能优化和监控系列(三) 分析Memory使用状况