zoukankan      html  css  js  c++  java
  • Oracle执行计划

    转载:https://www.cnblogs.com/Dreamer-1/p/6076440.html

    一:什么是Oracle执行计划?

    执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述

    二:怎样查看Oracle执行计划?

    因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例:

    ①:配置执行计划需要显示的项:

    工具  —>  首选项 —>   窗口类型  —>  计划窗口  —>  根据需要配置要显示在执行计划中的列

    执行计划配置

    执行计划的常用列字段解释:

    基数(Rows):Oracle估计的当前操作的返回结果集行数

    字节(Bytes):执行该步骤后返回的字节数

    耗费(COST)、CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好(该值可能与实际有出入)

    时间(Time):Oracle估计的当前操作所需的时间

    ②:打开执行计划:

    在SQL窗口执行完一条select语句后按 F5 即可查看刚刚执行的这条查询语句的执行计划

    执行计划查看

    注:在PLSQL中使用SQL命令查看执行计划的话,某些SQL*PLUS命令PLSQL无法支持,比如SET AUTOTRACE ON

    执行计划sql查看

    三:看懂Oracle执行计划

    看懂执行计划

    ①:执行顺序:

    根据Operation缩进来判断,缩进最多的最先执行;(缩进相同时,最上面的最先执行)

    例:上图中 INDEX RANGE SCAN 和 INDEX UNIQUE SCAN 两个动作缩进最多,最上面的 INDEX RANGE SCAN 先执行;

    同一级如果某个动作没有子ID就最先执行

    同一级的动作执行时遵循最上最右先执行的原则

    例:上图中 TABLE ACCESS BY GLOBAL INDEX ROWID 和 TABLE ACCESS BY INDEX ROWID 两个动作缩进都在同一级,则位于上面的 TABLE ACCESS BY GLOBAL INDEX ROWID 这个动作先执行;这个动作又包含一个子动作 INDEX RANGE SCAN,则位于右边的子动作 INDEX RANGE SCAN 先执行;

    图示中的SQL执行顺序即为:

    INDEX RANGE SCAN  —>  TABLE ACCESS BY GLOBAL INDEX ROWID  —>  INDEX UNIQUE SCAN  —>  TABLE ACCESS BY INDEX ROWID  —>  NESTED LOOPS OUTER  —>  SORT GROUP BY  —>  SELECT STATEMENT, GOAL = ALL_ROWS

    ( 注:PLSQL提供了查看执行顺序的功能按钮(上图中的红框部分) )

  • 相关阅读:
    sqlserver 服务器主体 无法在当前安全上下文下访问数据库
    【转】ASP.NET"正在中止线程"错误原因
    【转载】好的用户界面-界面设计的一些技巧
    新浪博客“网络繁忙请稍后再试”
    Mac上好用的视频播放器有哪些?
    Mac上好用的视频播放器有哪些?
    游戏平台代表--PS4【推荐】
    游戏平台代表--PS4【推荐】
    ospf剩余笔记
    ospf剩余笔记
  • 原文地址:https://www.cnblogs.com/zxf330301/p/9135695.html
Copyright © 2011-2022 走看看