在PL/SQL中 执行explain plain for  select ...

查看Description 数据参考:

Oracle常见的执行计划步骤

这里我们介绍一些常见的执行计划中的步骤及算法。

1、表访问路径

(1)TABLE ACCESS

FULL:全表扫描。它会访问表中的每一条记录(读取高水位线以内的每一个数据块)。

CLUSTER:通过索引簇的键来访问表。

BY INDEX ROWID:通过指定ROWID来访问表中的单条记录。ROWID是访问记录的最快方式,通常由索引访问得到。

BY USER ROWID:提供一个绑定变量、字面变量或WHERE CURRENT OF CURSOR子句来通过ROWID进行访问。

BY GLOBAL INDEX ROWID:通过由全局分区索引来获得ROWID,然后进行表访问。该访问出现在分区表中。

BY LOCAL INDEX ROWID:通过由局部分区索引获得ROWID,然后进行表访问。该访问出现在分区表中。

(2)EXTERNAL TABLE ACCESS:访问外部表。

(3)RESULT CACHE:这个SQL结果集可能来自结果集缓存。

(4)MAT_VIEW REWRITE ACCESS:SQL被重写以利用物化视图。

2、索引操作

(1)AND-EQUAL:合并来自一个或多个索引的结果集。

(2)INDEX

UNIQUE SCAN:只返回一条记录的地址(ROWID)的索引扫描。

RANGE SCAN:返回多条记录的ROWID的索引检索。一般出现这样的访问,是因为出现了区间操作符。

FULL SCAN:按照索引键的顺序扫描整个索引。

SKIP SCAN:组合索引键中非前导列索引检索。

FULL SCAN(MAX/MIN):检索索引中的最高或最低的索引条目。

FAST FULL SCAN:按照块顺序扫描每一个索引的条目,可能会使用多块读取。

(3)DOMAIN INDEX:应用域索引。

3、位图索引操作

(1)BITMAP

CONVERSION:将位转换为ROWID或相反。

INDEX:从位图中撮一个值或一个范围的值。

MERGE:合并位图。

MINUS:从一个位图减去另一个位图。

OR:对两个位图进行OR操作。

4、表连接操作

(1)CONNECT BY:对前一个步骤的输出结果执行一个层次化的自连接操作。

(2)MERGE JOIN:对前一个步骤的输出结果执行一个合并连接。

(3)NESTED LOOP:对前一个步骤执行嵌套循环连接。对上一层结果集的每一行,都会扫描下一层结果集以找到匹配记录。

(4)HASH JOIN:对两个记录进行散列连接。

(5)任意连接操作

OUTER:外连接

ANTI:反连接

SEMI:反连接

CARTESIAN:一个结果集中的每一条记录都与另一个结果集中的每一条记录进行连接。

5、集合操作

CONCATENATION:与显式指定一个UNION子句一样,多个结果集被按照同样的方式做合并。它通常发生在对索引列使用OR运算时。

INTERSECTION:对两个结果进行比较,只返回两个结果集中都存在的记录。

MINUS:除了在第二个结果集中出现的记录外,返回第一个结果集中的所有记录。

UNION-ALL:对两个结果集进行合并,并返回两个结果集中的所有记录。

UNION:与UNION-ALL相同,但是它不返回重复记录。

VIEW:访问一个视图定义或或创建一个临时表用于存放结果集。

6、分区操作

(1)PARTITION

SINGLE:访问单个分区。

ITERATOR:访问多个分区。

ALL:访问所有分区。

INLIST:基于IN列表中的值来访问分区。

7、汇总操作

(1)COUNT:使用COUNT函数进计算。

STOPKEY:计算结果中的记录,当达到一定数量时,就停止计算。这通常发生在使用了WHERE子句且指定了ROWNUM,如:WHERE ROWNUM <= 10。

(2)BUFFER SORT:对临时结果集做一次内在排序。

(3)HASH GROUP BY:使用散列进行分组操作。

(4)INLIST ITERATOR:对IN中的每一个值都实现一次子操作。

(5)SORT

GROUP BY:为了满足GROUP BY而对结果集进行排序。

AGGREGATE:当在已分组好的数据上使用分组函数时,会出现此操作。

JOIN:了进行合并连接而对记录进行排序。

UNIQUE:排除重复记录的排序操作,通常是使用DISTINCT子句。

GROUP BY:为满足GROUP BY子句,对结果集进行排序分组。

8、其他操作

(1)FOR UPDATE:使用了FOR UPDATE子句。

(2)COLLECTION ITERATOR:使用了表函数提取记录。

(3)FAST DUAL:访问DUAL表。

(4)FILTER:从结果集中排除掉不匹配选取条件的记录。

(5)REMOTE:通过数据库连接,访问一个外部的数据库。

(6)FIRST ROW:获取查询的第一条记录。

(7)SEQUENCE:使用了Oracle序列。

(8)LOAD AS SELECT:使用SELECT进行直接路径的INSERT操作。

(9)FIXED TABLE:访问固定的(X$/V$)表。

(10)FIXED INDEX:访问固定的索引。

(11)WINDOW BUFFER:支持分析函数的内部操作。

oracle执行计划explain,Oracle 常见的执行计划步骤(explain结果的Description数据参考)...相关推荐

  1. oracle 数据执行计划,Oracle 常见的执行计划步骤(explain结果的Description数据参考)...

    在PL/SQL中 执行explain plain for  select ... 查看Description 数据参考: Oracle常见的执行计划步骤 这里我们介绍一些常见的执行计划中的步骤及算法. ...

  2. oracle数据库迁移收费,ORACLE数据库迁移计划

    数据迁移计划 原因: oracle数据库数据文件将磁盘空间占满导致数据无法写入,如果删除历史数据,表空间不会释放占用物理空间不会释放,所以磁盘依旧是满的,现在需要腾出部分空间,然后挂在新的盘符为数据存 ...

  3. oracle 数据执行计划,Oracle里常见的执行计划

    本文介绍了Oracle数据库里常见的执行计划,使用的Oracle数据库版本为11.2.0.1. 1.与表访问相关的执行计划 Oracle数据库里与表访问有关的两种方法:全表扫描和ROWID扫描.反映在 ...

  4. 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释

    一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...

  5. 在Oracle中,如何得到真实的执行计划?

    在Oracle中,如何得到真实的执行计划? Oracle查看执行计划的几种方法:http://blog.itpub.net/26736162/viewspace-2136865/ 一.  如何得到真实 ...

  6. SQL语言之执行计划(Oracle)

    执行计划 一条查询语句在Oracle中的执行过程或访问路径的描述: 一.配置执行计划需要显示的项(pl/sql developer) 二.执行计划的常用列字段解释 基数(Cardinality):O ...

  7. 执行计划信息Oracle 执行计划总结

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 1      看查Oracle执行筹划的几种方法 1.1      通过PL/SQL Dev工具 1.直接File->New- ...

  8. oracle 执行计划 ppt,oracle查看执行计划的方法

    查看执行计划的方法 Explain Plan For SQL 不实际执行SQL语句,生成的计划未必是真实执行的计划 必须要有plan_table SQLPLUS AUTOTRACE 除set auto ...

  9. 【云和恩墨大讲堂】从执行计划洞察ORACLE优化器的“小聪明”

    作者简介 黄浩  惠普 十年一剑,十年磨砺.3年通信行业,写就近3万条SQL:5年制造行业,遨游在ETL的浪潮:2年性能优化,厚积薄发自成一家 主题介绍: Oracle执行计划的另类解读:调皮的执行计 ...

  10. oracle 执行计划耗时,oracle各种执行计划优缺点

    一. 获取oracle执行计划的方法有6种,各自的优缺点如下,根据实际情况进行选择使用: explain plan for 方式 步骤1:explain plan for 后跟着SQL语句 步骤2:s ...

最新文章

  1. python适合零基础学习吗-零基础能学好Python吗?哪些人更适合学习?
  2. windows或Ubuntu中请求github.com请求超时,或在下载GitHub文件出现:<urlopen error [Errno 110] Connection timed out>
  3. Ubuntu16.04安装ROS后运行gazebo报错 it says it‘s incompatible with that RT“‘ failed.
  4. 表达式封装和模型驱动封装的区别
  5. dw怎么做竖线_我花了5分钟,做了一份极“拉风”的PPT
  6. Apache 日志配置,包含过滤配置
  7. SQL数据库不用SQL语句能显示全表的内容_Sql性能优化看这一篇就够了
  8. [译]CSS3实现柱状图的3D立体动画效果
  9. gitlab VS github
  10. 聊天IM的时间戳显示规则
  11. [转载].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
  12. SSM框架-添加信息及图片上传到本地MultipartResolver-foreknow_cms
  13. 人脸检测(八)--HOG特征原理及实现
  14. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析...
  15. 学习笔记:人工势场法
  16. 龙珠游戏-博弈之斐波那契数列
  17. Ubuntu-18.04安装
  18. C语言复杂构造数据类型ppt,复杂构造数据类型.ppt
  19. 双系统启动界面自定义美化设置
  20. getch(),getche(),getchar()的区别 (综合转)

热门文章

  1. Scala(第五节)actor并发编程、文件操作和网络请求、隐式转换和隐式参数、Akka并发编程、Akka模拟简易Spark通信
  2. 2011最全的国内外开源SNS源码大集合
  3. H5播放Rtmp之Flowplayer播放
  4. 网络流量监测IP雷达 1.0
  5. Unity进阶之ET网络游戏开发框架 01-下载、运行
  6. 关于unity,Player打包面板的信息(上)
  7. floppy计算机专业术语,计算机专业术语解释
  8. 编译的html帮助文件(.chm)打不开,chm文件无法打开怎么办
  9. Github TOP100 Android开源,flutter与android混合开发
  10. Mac 安装IE浏览器