文章目录

  • 1 概述
    • 1.1 思维导图
    • 1.2 概念
  • 2 执行计划
    • 2.1 预估的
    • 2.2 真实的
  • 3 示例
  • 4 备选命令

1 概述

什么是 Oracle 的执行计划?

执行计划是一条查询语句在 Oracle 中的执行过程或访问路径的描述
简单一点说,就是: Oracle 是如何执行 sql 语句的。

  • 比如说,就像咱去一个地方,事先会计划好怎么坐车一样。先坐公交车到哪儿再坐地铁,oracle 的执行计划也是如此,就是一步一步地执行 sql。
  • oracle 的执行计划是很复杂的,一般我们看到的执行计划都是 oracle 通过内部算法计算以后选择的一个消耗比较少的执行路径,就像我们去哪里也要选择一条捷径一样的道理。

1.1 思维导图

1.2 概念

  • 表访问方式 - (全表扫描、通过 rowid 扫描、通过索引扫描)

  • 表连接方式详解 - (nested loops、hash join、sort merge join)

2 执行计划

2.1 预估的

最简单的方式:通过 pl/sql developer 的 F5 进行查看:

2.2 真实的

前提说明:

(1) 该用户(如:scott)要有访问动态视图的权限(最常用的用户:system)grant select any dictionary to scott;(2) sql 已执行完成

具体步骤:

1. 获取执行计划的统计信息(两种方式) '下列两条命令必须在同一个窗口执行哦'
alter session set statistics_level = all; -- 推荐
select * from dual;
-- 设置前,可以用下列两种方式查询当前的 参数信息
-- select * from v$parameter t where t.name = 'statistics_level';
-- show parameter statistics_level
或(每次查询时,每个 sql 语句都加上下列 hint):
select /*+ gather_plan_statistics */ * from dual;2. 找出执行语句的 'sql_id'
select t.*from v$sql twhere t.sql_text like '%select * from%'order by t.last_active_time desc;3. 根据 'sql_id' 查出 '真实执行计划(最近一条)'
select * from table(dbms_xplan.display_cursor('cyfzxc61h3g3r',null,'allstats last'));

3 示例

获取 真实的执行计划

1. 执行的 sql 语句:

select /*+ gather_plan_statistics*/t.*from scott.emp twhere t.empno >= 7782;

2. 找出执行语句的 ‘sql_id’:

select t.*from v$sql twhere t.sql_text like '%where t.empno >= 7782%'order by t.last_active_time desc;

3. 根据 ‘sql_id’ 查出 ‘真实执行计划(最近一条)’:

select * from table(dbms_xplan.display_cursor('92dkjj0sw6wjr',null,'allstats last'));

最终结果:

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as system@orclSQL> select * from table(dbms_xplan.display_cursor('92dkjj0sw6wjr',null,'allstats last'));
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID  92dkjj0sw6wjr, child number 0
-------------------------------------
select /*+ gather_plan_statistics*/  t.*   from scott.emp t  where
t.empno >= 7782
Plan hash value: 169057108
------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name   | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |      1 |        |      8 |00:00:00.01 |       2 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |      1 |      5 |      8 |00:00:00.01 |       2 |
|*  2 |   INDEX RANGE SCAN          | PK_EMP |      1 |      5 |      8 |00:00:00.01 |       1 |
------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------2 - access("T"."EMPNO">=7782)
20 rows selectedSQL>

参数说明:

Starts   该 sql 执行的次数
E-Rows      预计返回的行数
A-Rows      实际返回的行数。可以和 E-Rows 比对,确定哪一步出现了问题
A-Time      每一步实际执行的时间
Buffers     每一步实际执行的逻辑读或一致性读
Reads       每一步实际执行的物理读
Writes      每一步实际执行的物理写
OMem        最优执行模式所需的内存评估值
1Mem        one-pass模式所需的内存评估值
Used_Mem    则为当前操作实际执行时消耗的内存括号里面为(发生磁盘交换的次数,1次即为One-Pass,大于1次则为Multi_Pass,如果没有使用磁盘,则显示0)

4 备选命令

SQL> set col 100  -- 设置显示 100 列(若命令窗口显示不全时使用)
SQL>
SQL> clear -- 清屏

Oracle 执行计划详解(预估 + 真实)相关推荐

  1. 海天 oracle,Oracle执行计划详解

    作者:TTTBLOG --- 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 ...

  2. Oracle执行计划详解

    ---引用------ 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介: 本文全面详细 ...

  3. MySQL 优化:Explain 执行计划详解

    昨天中午在食堂,和部门的技术大牛们坐在一桌吃饭,作为一个卑微技术渣仔默默的吃着饭,听大佬们高谈阔论,研究各种高端技术,我TM也想说话可实在插不上嘴. 聊着聊着突然说到他上午面试了一个工作6年的程序员, ...

  4. Explain 执行计划详解

    什么是执行计划 我们往往通过慢查询日志,可以找到慢查询的sql具体是怎么写的.我们往往可以通过表的索引,执行引擎等等去自己判断sql为什么执行缓慢的原因.但是这明显不是高效的. 我们的MySQL中为我 ...

  5. Explain执行计划详解

    作者:IT王小二 博客:https://itwxe.com 一条查询 SQL 语句为什么会执行很慢?执行的时候走了什么索引?多表查询的时候 SQL 大体执行流程是怎么样的?Explain 执行计划详解 ...

  6. Oracle的执行计划详解(转自某位神女的女神帖)

    简介:     本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容.     并有总结和概述,便于理解与记忆! +++ 目录 ---     一.相关的概念    ...

  7. ocacle 执行计划_Oracle执行计划详解

    (VG8\%x.\)\0简介:ITPUB个人空间Lp9ohHv }*V 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. /V(Odd$J+S#M0E0    ...

  8. Oracle的执行计划详解

    一.什么是执行计划 An explain plan is a representation of the access path that is taken when a query is execu ...

  9. mysql和oracle执行计划_mysql explain执行计划详解

    原文链接:https://www.cnblogs.com/xiaoboluo768/p/5400990.html mysql> explain  select t1.kprq from    p ...

  10. MySQL高级 之 explain执行计划详解

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...

最新文章

  1. MySQL定义条件和处理程序_MySQL教程111-MySQL定义条件和处理程序
  2. 细数人体十大最“无用”的器官。
  3. Flyway 执行报错: 'user_variables_by_thread' 表没有SELECT权限问题
  4. 《数据库系统实训》实验报告——函数的应用
  5. php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...
  6. TOP命令监视系统任务及掩码umask的作用
  7. 小小智慧树机器人_中国工厂番外篇丨AGV机器人演绎智能“搬运工”
  8. Mysql练习_MySQL练习(一)
  9. html的弹窗标签是什么意思,前端实现展示弹窗,为什么不同的标签弹出相同的内容?是不是js函数写错了,需要怎么改呢?...
  10. JAVA中反射机制五(JavaBean的内省与BeanUtils库)
  11. Java线程池关闭1-shutdown和isTerminated
  12. 七夕过后,我用Python分析了大家单身的原因,结果令人震惊...
  13. 织梦内核PHP在线教育知识付费课程分销网站源码 带手机端+集成支付功能
  14. 【数值分析】python实现四阶龙格库塔法
  15. 2寸的照片长宽各是多少_标准的2寸照片尺寸是多大?
  16. 2021十大付费知识平台 知识付费平台排名
  17. 更好的 java 重试框架 sisyphus 背后的故事
  18. [IMX6Q][Android5.1]移植笔记 --- Kernel启动无法挂载文件系统
  19. SQL一对多,子表关联查询
  20. Android复杂页面代码拆分方法

热门文章

  1. 通达信插件模板 Purebasic版
  2. oracle自学视频
  3. mkv格式提取文件方法
  4. 系统集成项目管理工程师中高级一次通过经验之谈
  5. Linux安装MySQL5.7
  6. Java:List转Map (用stream实现)
  7. 《深度学习》之 VGG卷积神经网络 原理 详解
  8. Visio 2019连接MySQL数据库反向工程作数据库模型图
  9. 八大顶层设计,决定企业融资难度
  10. Spring核心原理