zoukankan      html  css  js  c++  java
  • PL/SQL执行计划查看

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

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

    二.界面说明

    首先我们看第二行有几个属性可以选“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:

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

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

    然后我们对dtnm字段添加索引后再执行这条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)'%'被添加在参数前面。

     

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

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

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

     

    5)使用null判断

    记录一下PLSQL12的一个注册码

    PLSQL Developer 12 注册码
    product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le 
    serial Number:226959 
    password: xs374ca

  • 相关阅读:
    阿里云服务器配置
    linux 环境变量问题
    docker 常用操作
    docker 安装的nginx 的默认配置
    camera开发相关
    Ubuntu下使用Git
    Java web项目实现多附件上传
    Java web项目实现上传图片及时预览
    SQL Server游标【转】
    SQL Server游标的使用【转】
  • 原文地址:https://www.cnblogs.com/yxth/p/10756376.html
Copyright © 2011-2022 走看看