PL/SQL执行计划查看

时间:2022-10-28 21:36:38

一.如何查看PLSQL的执行计划

在SQl Window窗口输入sql语句,然后按键"F5",就会进入执行计划查看界面。

PL/SQL执行计划查看

二.界面说明

首先我们看第二行有几个属性可以选“Tree”、“HTML”、“Text”、“XML”。这几个里面的核心数据是一样的,不同的只是对核心数据的展示方式,分别为Tree、HTML、Text、XML。这个可以根据个人习惯来进行选择。

再下面有几个列属性(每个人的列属性可能会不同,这个是可以在PLSQL中进行配置)

我们首先看第一列的Description:下面的内容分别是我们这条SQL的执行步骤,缩进量最多的步骤最先执行,如果缩进量相同,则按照从上往下的顺序执行。

Object owner:对象的所有者。

Object name:对象名称。

Cost:成本花费。这里可以详细地查看SQL执行的每一步的成本花费。

Time:执行时间。

三.如何优化SQL

1.查看SQL是全表扫描还是利用索引查询。

假设有一张表t_srhs_jks,里面有1000万条数据,我们在这张表中执行一条SQL:

PL/SQL执行计划查看

我们可以看到根据条件dtnm=****查询数据,由于DTNM字段不是索引,因此首先执行了"TABLE ACCESS FULL",即全表搜索,然后再执行上面的"SELECT STATEMENT, GOAL = ALL ROWS"查询出所有数据行。

在这条SQL中的成本花费一共是14287(Cost=14287),执行时间是172(Time=172)。

然后我们对dtnm字段添加索引后再执行这条SQL:

PL/SQL执行计划查看

相比第一次执行,这里的成本花费只有5385,执行时间只有65,减少了将近一倍。

然后我们再来查看一下Description下的执行步骤:

(1)INDEX RANGE SCAN:索引范围内查找。

(2)TABLE ACCESS BY INDEX ROWID:根据索引找到的ROWID来查找需要的数据。

(3)SELECT STATEMENT,GOAL = ALL ROWS:根据找到的数据,返回所有行。

关于索引的扫描类型:

1)index unique scan:索引唯一扫描。

  单列唯一索引:通过"="判断条件时候才会使用,至多返回一条数据。

  多列唯一索引:所有的列都通过"="判断条件时才会使用,且不能有任何一列的值被指定为null。

2)index range scan:索引范围扫描。

  单列唯一索引:通过">"、"<"、">="、"<="、"between"等判断条件时会被使用。

  多列唯一索引:全部或部分列(必须包含第一列,否则不会走这条索引)通过">"、"<"、">="、"<="、"between"等判断条件时会被使用。部分列也可以在通过"="判断条件时候被使用。

  普通索引:单列索引正常的条件判读都会使用范围扫描,多列的索引必须带有第一列索引的条件判断才会被使用范围扫描。

3)index skip scan:索引跳跃扫描。

  只有当组合索引,且引导列(第一列)没有被使用的情况下,可能会使用索引跳跃扫描。一般发生在引导列的distinct值很少的情况下。oracle帮我们改写了sql语句,如select * from A where b=100,组合索引(a,b)中a的取值只有1和2时,sql会被改写为select * from A where a = 1 and b = 100 union all select * from A where a = 2 and b = 100。

4)index full scan:索引全扫描。

  这一个和索引快速扫描异曲同工。通常是在使用索引列进行count、sum等函数统计时候使用。

5)index fast full scan:索引快速扫描。

关于索引,有以下几种情况时候不会被使用(只针对数据字段查询,不包括count、sum等函数统计):

1)'%'被添加在参数前面。

PL/SQL执行计划查看

2)带'not'的条件,包括'<>'、'!='。

PL/SQL执行计划查看

3)执行函数(函数索引除外。如果定义的是函数索引,即使使用函数仍然是可能会走索引。)

PL/SQL执行计划查看

4)格式不正确(下图的jksbh字段是vchar类型,令它与number类型比较,不会走索引。)

PL/SQL执行计划查看

5)使用null判断

PL/SQL执行计划查看的更多相关文章

  1. 利用pl&sol;sql执行计划评估SQL语句的性能简析

    一段SQL代码写好以后,可以通过查看SQL的执行计划,初步预测该SQL在运行时的性能好坏,尤其是在发现某个SQL语句的效率较差时,我们可以通过查看执行计划,分析出该SQL代码的问题所在.  那么,作为 ...

  2. MySql 的SQL执行计划查看,判断是否走索引

    在select窗口中,执行以下语句: set profiling =1; -- 打开profile分析工具show variables like '%profil%'; -- 查看是否生效show p ...

  3. Oracle查看SQL执行计划的方式

    Oracle查看SQL执行计划的方式     获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式:   基本有以下几种方式: ...

  4. 查看SQL执行计划

    一用户进入某界面慢得要死,查看SQL执行计划如下(具体SQL语句就不完全公布了,截断的如下): call     count       cpu    elapsed       disk       ...

  5. 查看Oracle SQL执行计划的常用方式

    在查看SQL执行计划的时候有很多方式 我常用的方式有三种 SQL> explain plan for 2 select * from scott.emp where ename='KING'; ...

  6. plsql中查看sql执行计划

    想要优化sql语句,可以从sql执行计划入手. 在plsql客户端,提供了一个方便的按钮来查看执行计划 选中需要查看的sql语句,点击此按钮,就可以看到该条语句的执行计划了. 结果集包括描述,用户,对 ...

  7. EXPLAIN 查看 SQL 执行计划

    EXPLAIN 查看 SQL 执行计划.分析索引的效率: id:id 列数字越大越先执行: 如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. ...

  8. Oracle之SQL优化专题01-查看SQL执行计划的方法

    在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...

  9. Oracle之SQL优化专题02-稳固SQL执行计划的方法

    首先构建一个简单的测试用例来实际演示: create table emp as select * from scott.emp; create table dept as select * from ...

随机推荐

  1. 最短路算法 &lpar;bellman-Ford算法&rpar;

    贝尔曼-福特算法与迪科斯彻算法类似,都以松弛操作为基础,即估计的最短路径值渐渐地被更加准确的值替代,直至得到最优解.在两个算法中,计算时每个边之间的估计距离值都比真实值大,并且被新找到路径的最小长度替 ...

  2. 做java工作整整1年了&comma;看到了大牛的奋斗历程&comma;我感觉自己又有目标了

    2014年6月,刚刚踏上社会那会儿,我记得我第一次面试啥都不知道,穿的也不修边幅去应聘一家4s销售,面试官看到我,我明细感觉到了对方厌恶的神色,这是我上社会的第一课,找工作不管是什么工作,衣着得体,是 ...

  3. &lbrack;转&rsqb;C&sol;C&plus;&plus;中的memset

    http://blog.csdn.net/songuooo/article/details/7819790 1. 需要的头文件 C中为<memory.h> 或 <string.h&g ...

  4. 云存储,OWNCLOUD,真的遇到过这个需求哟。。。

  5. Java---设计模块&lpar;值对象&rpar;

    ★ 场景和问题 在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互? ★ 基本的编写步骤 ◎第1步:写一个类,实现可序列化(如果以后数据 ...

  6. 2DToolkit官方文档中文版打地鼠教程

    初始设置 创建一个Unity项目,并导入2D Toolkit插件. 导入完成后,在Project窗口会显示TK2DROOT文件夹(后续版本文件夹名称或许会有变动). 导入素材游戏,你可以从这里下载.下 ...

  7. VirtWire 注册教程

    1 首先打开virtwire官方网站 网站地址:戳我 2 如果现实如下图所示,点击红色框中的网址连接.(网页中有Terms of Service可以读) 3 如果网页正常打开,点击“ORDERHOST ...

  8. JQuery UI之Autocomplete&lpar;3&rpar;属性与事件

    1.Autocomplete的属性 首先引入css和js文件,以及对应的HTML代码如下: <link href="../css/jquery-ui.css" rel=&qu ...

  9. 【Java入门提高篇】Day20 Java容器类详解(三)List接口

    今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的. Lis ...

  10. GraphX中Pregel单源点最短路径(转)

    原文链接:GraphX中Pregel单源点最短路径 GraphX中的单源点最短路径例子,使用的是类Pregel的方式. 核心部分是三个函数: 1.节点处理消息的函数  vprog: (VertexId ...