美文网首页
oracle查询语句执行计划分析

oracle查询语句执行计划分析

作者: baishangbing | 来源:发表于2020-04-28 18:48 被阅读0次

1 命令行开启配置

#显示查询结果
set autotrace on
#不显示查询结果
set autotrace traceonly

2 执行查询语句

#设置命令行每行显示字符数,防止查询结果换行
set line 4000
#执行查询语句
select * from ah02 where aaa001='4B24B79D1D4724DBE053E523AC0A48C8';

3 分析查询结果

image.png
如上图所示,index range scan为索引范围扫描;

4 知识点拓展

几种常见的索引类型扫描:
  • index unique scan
    索引唯一扫描,当可以优化器发现某个查询条件可以利用到主键、唯一键、具有外键约束的列,或者只是访问其中某行索引所在的数据的时候,优化器会选择这种扫描类型。
  • index range scan
    索引范围扫描,当优化器发现在UNIQUE列上使用了大于、小于、大于等于、小于等于以及BETWEEN等就会使用范围扫描,在组合列上只使用部分进行查询,导致查询出多行数据。对非唯一的索引列上进行任何活动都会使用index range scan。
  • index full scan
    全索引扫描,如果要查询的数据可以全部从索引中获取,则使用全索引扫描。
  • index fast full scan
    索引快速扫描,扫描索引中的全部的数据块,与全索引扫描的方式基本上类似。两者之间的明显的区别是,索引快速扫描对查询的数据不进行排序,数据返回的时候不是排序的。“在这种存取方法中,可以使用多块读功能,也可以使用并行读入,从而得到最大的吞吐量和缩短执行时间”。
order by、group by使用索引的前提条件:
  • order by、group by中所有的列必须包含在相同的索引中并保持在索引中的排列顺序;
  • order by、group by中所有的列必须定义为非空
不走索引的几种情况:
  • where子句中使用 is null 和 is not null
  • where子句中使用函数
  • 使用like ‘%T’ 进行模糊查询
  • where子句中使用不等于操作(包括:<>, !=, not colum >= ?, not colum <= ? ,可以使用or代替)
  • 比较不匹配数据类型,例如:select * from table where jlbh = 1;其中jlbh为varchar2类型字段

执行结果分析
  • ecursive calls
    解析该SQL语句调用了多少次函数来访问row cache
  • consistent gets
    一致性读,是SQL优化的目标(属于缓存读)
  • physical reads
    物理读
  • redo size
    产生了多少redo日志
  • bytes sent via SQL*Net to client
    服务端发送多少字节
  • bytes received via SQL*Net from client
    客户端发送了多少字节
  • SQL*Net roundtrips to/from client
    客户端/服务器来回次数
  • sorts (memory)
    内存排序
  • sorts (disk)
    磁盘排序
  • rows processed
    处理/产生了多少行结果

相关文章

  • oracle查询语句执行计划分析

    1 命令行开启配置 2 执行查询语句 3 分析查询结果 4 知识点拓展 几种常见的索引类型扫描: index un...

  • 九、explian分析sql语句

    explian语句用于分析sql的执行计划,如下 select_type:查询类型 simple不含子查询 p...

  • MySQL慢查询

    定义 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定...

  • 62 mysql 定位慢查询和索引优化

    1 什么是慢查询? 如何定位数据库慢查询? 2,如何使用执行计划EXPLAIN 分析sql语句? 3,EXPLAI...

  • SQL基础-执行计划-源动力

    什么是执行计划 执行计划:是查询优化器分析语句后,生成的一种确定性访问所需数据的最高效方式。 执行计划的输入: 查...

  • MySQL_Explain

    Explain 查看执行计划,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。...

  • Explain命令

    explain命令用来查询sql语句的执行计划。使得我们可以针对sql查询语句进行优化。例如:查看select *...

  • Presto查询执行模型

    Statement语句: 其实就是输入的SQL Query 根据SQL语句生成查询执行计划,进而生成可以执行的查询...

  • 数据库分页查询

    sqlserver分页查询语句 mysql分页 oracle分页查询语句 EF Lambda Skip跳过多少条...

  • MySQL-explain详解

    对SQL查询语句执行explain命令可以得到SQL语句的执行计划。 id:序号,表示查询中执行select子句或...

网友评论

      本文标题:oracle查询语句执行计划分析

      本文链接:https://www.haomeiwen.com/subject/zmubwhtx.html