`
langgufu
  • 浏览: 2289386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解读Oracle执行计划

阅读更多

本篇解释执行计划中基本项的含义

关于生成和显示Oracle执行计划的方法请阅读

http://blog.csdn.net/laoshangxyc/article/details/8629123

下面举例进行解释

 

 

[html] view plaincopy
  1. SQL> explain plan for  
  2.   2  select a.name,b.name  
  3.   3  from t1 a,t2 b  
  4.   4  where a.id=b.id  
  5.   5  and a.id='1';  
  6.   
  7. Explained.  
  8.   
  9. SQL> set lines 200  
  10. SQL> set pagesize 0  
  11. SQL> select * from table(dbms_xplan.display());  
  12. Plan hash value: 2680223496  
  13.   
  14. --------------------------------------------------------------------------------------  
  15. | Id  | Operation                    | Name  | Rows  | Bytes | Cost (%CPU)| Time     |  
  16. --------------------------------------------------------------------------------------  
  17. |   0 | SELECT STATEMENT             |       |     1 |    20 |     5   (0)| 00:00:01 |  
  18. |   1 |  NESTED LOOPS                |       |     1 |    20 |     5   (0)| 00:00:01 |  
  19. |   2 |   TABLE ACCESS BY INDEX ROWID| T1    |     1 |    10 |     1   (0)| 00:00:01 |  
  20. |*  3 |    INDEX UNIQUE SCAN         | T1_PK |     1 |       |     0   (0)| 00:00:01 |  
  21. |*  4 |   TABLE ACCESS FULL          | T2    |     1 |    10 |     4   (0)| 00:00:01 |  
  22. --------------------------------------------------------------------------------------  
  23.   
  24. Predicate Information (identified by operation id):  
  25. ---------------------------------------------------  
  26.   
  27.    3 - access("A"."ID"=1)  
  28.    4 - filter("B"."ID"=1)  
  29.   
  30. 17 rows selected.  

对于Oracle执行计划,并列的行从上往下执行,非并列的行,靠右的先执行。

 

例如本例中:

id为3的操作最靠右,所以最先执行,其次是id为2和4的操作较靠右,而且并列,那么按照并列从上往下执行的原则,id为2的操作比id为4的操作先执行。

然后执行id为1的操作。

那么本例中执行计划按id排序为 3>2>4>1

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

本例中使用的DBMS_XPLAY显示的执行计划,其中:

id:为每个操作的唯一序列号,

operation:为每个操作的名称和方式,

name:是操作对象

Rows:Oracle估算当前操作影响的行数

bytes:Oracle估算当前操作的影响的数据量(单位byte)

Cost:Oracle计算出来的执行该操作的代价

Time:Oracle估算出来的该操作花费的时间

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

id为0的操作为SELECT STATEMENT表示这条语句的类型为一条select语句,而非一个真实的操作。

id为1的操作表示它需要对id为2和4的操作得来的结果集以嵌套循环的方式进行数据关联。

id为2的操作是TABLE ACCESS BY INDEX ROWID,name是T1,表示它是通过索引的ROWID来访问表T1的。而索引上的ROWID则需要通过其子操作3来获取。

id为3的操作是INDEX UNIQUE SCAN,name是T1_PK表明那是通过主键唯一键值来获取其父操作2需要的Rowid。

id为4的操作是TABLE ACCESS FULL,name是T2,表明是对T2做的一个全表扫描。

注意:id为3和4的前面有*,表示这个操作有谓词条件:访问条件(access)或过滤条件(filter)

如上面的

 

[html] view plaincopy
  1. Predicate Information (identified by operation id):  
  2. ---------------------------------------------------  
  3.   
  4.    3 - access("A"."ID"=1)  
  5.    4 - filter("B"."ID"=1)  

 

访问条件access和过滤条件filter的区别

访问条件是帮助操作在对象上定位到符合条件的数据,然后再读取数据。

过滤条件是操作已经从对象上获取了数据,然后根据条件将不符合要求的数据过滤掉。

分享到:
评论

相关推荐

    oracle执行计划解读

    什么是执行计划,如何访问数据,执行计划层次关系、例子解说等几个方面,全面介绍oracle执行计划说明,并进一步给出优化建议等相关内容。

    oracle 执行计划 详解

    自己动手总结出来的所有的东西都有例子,执行计划的分析,访问路径分析,执行顺序分析方法,执行计划的解读方法,刚近公司,带我的人要我做的,也是想帮我好好理解,现在拿来分享下

    Oracle执行计划详细解读.pptx

    Oracle执行计划详细解读.pptx

    读懂oracle sql执行计划

    sql 执行计划的如何产生,如何获取,如何解读,在这文档中可以看到答案

    SQL执行计划简单分析

    SQL ORACLE 执行计划 分析 数据库

    Oracle DBA突击帮你赢得一份DBA职位(完全高清版)1

    7.3 解读执行计划  7.4 等待事件 7.5 小结  第8章 自动管理和性能指标  第9章 自动诊断和顾问  第三部分 高级篇 第10章 Oracle的异构服务  第11章 数据安全  第12章 限制用户行为  第13章 审计 

    Oracle数据库性能优化的艺术 (文平) 高清PDF扫描版

    第9章从索引和执行计划的角度讲解了数据库性能优化的方法;第10~12章着重介绍了在数据库系统部署并运行后,如何获得数据库运行时的性能状态,如何对正在使用的各种资源进行分析,分析时使用什么工具,以及如何解读...

    SQL编写规范(数据库操作规范)

    8.用执行计划分析SQL性能    EXPLAIN PLAN是一个很好的分析SQL语句的工具,它可以在不执行SQL的情况下分析语句    通过分析,我们就可以知道ORACLE是怎样连接表,使用什么方式扫描表(索引扫描或全表扫描),...

    乐观汇总uniswapv2示例

    将Solidity合同移植到乐观:使用Uniswap V2的指南本指南将逐步介绍移植现有Solidity项目以支持在Optimism 2层网络上执行的过程。 对于示例代码库,我们将使用Uniswap V2分散式交换。 我们将经历修改Uniswap存储库的...

    ssh(structs,spring,hibernate)框架中的上传下载

     首先,必须定义一个能够从连接池中抽取出本地数据库JDBC对象(如OracleConnection,OracleResultSet等)的抽取器:nativeJdbcExtractor,这样才可以执行一些特定数据库的操作。对于那些仅封装了Connection而未包括...

    大数据架构师的岗位职责.docx

    9、良好的逻辑分析能力和沟通能力,执行力强、对待工作认真严谨、责任心强、具备出色的学习能力和团队合作精神,有一定的推动大数据架构师的岗位职责全文共4页,当前为第2页。大数据架构师的岗位职责全文共4页,...

    完整版《HTML5高级程序设计》2

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 163 ...

    完整版《HTML5高级程序设计》4

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 163 ...

    完整版《HTML5高级程序设计》5

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 163 ...

    完整版《HTML5高级程序设计》3

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 163 ...

    HTML5高级程序设计.part5

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 ...

    HTML5高级程序设计.part4

    8.2.3 多个JavaScript文件的加载与执行 160 8.2.4 与HTML5 Web Workers通信 160 8.3 编写主页 161 8.3.1 处理错误 161 8.3.2 HTML5 Web Workers 162 8.3.3 HTML5 Web Workers的嵌套使用 162 8.3.4 使用定时器 ...

Global site tag (gtag.js) - Google Analytics