一、ORACLE中常见执行计划

表访问的执行计划

1、table access full:全表扫描。它会访问表中的每一条记录。

2、table access by user rowid:输入源rowid来自于用户指定。

3、table access by index rowid:输入源rowid来自于索引。

4、table access by global index rowid:全局索引获取rowid,然后再回表。

5、table access by local index rowid:分区索引获取rowid,然后再回表。

6、table access cluster:通过索引簇的键来访问索表。

7、external table access:访问外部表。

8、result cache:结果集可能来自于缓存。

9、mat_view rewrite access:物化视图。

索引访问的执行计划

1、index unique scan:只返回一条rowid的索引扫描,或者unique索引的等值扫描。

2、index range scan:返回多条rowid的索引扫描。

3、index full scan:顺序扫描整个索引。

4、index fast full scan:多块读方式扫描整个索引。

5、index skip scan:多应用于组合索引中,引导键值为空的情况下索引扫描。

6、and-equal:合并来自于一个或多个索引的结果集。

7、domain index:应用域索引。

表连接的执行计划

表连接的几种方式:

1、SORT MERGE JOIN(排序-合并连接)

2、NESTED LOOPS(嵌套循环)

3、HASH JOIN(哈希连接)

4、CARTESIAN PRODUCT(笛卡尔积)

二、怎样查看Oracle执行计划

1、plsql Developer中查看

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

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

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

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

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

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

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

2、sql命令查看

(1)explain plan命令

例子:explain plan for  select * from zyfs.contact_order where rowid = 'AAAU1wADyAAAAFLAAA';

select * from table(dbms_xplan.display);

(2)sqlplus的autotrace开关

autotrace开关可以在sqlplus下得到目标sql的执行计划,也可以同时得到目标sql的统计信息。autotrace开关的具体语法如下:

set autotrace {off|on|traceonly} [explain] [statistics]

具体使用方法如下:

(1)set autotrace on:显示目标sql的执行结果,执行计划和统计信息。

(2)set autotrace off:只显示目标sql的执行结果,为默认值。

(3)set autotrace traceonly:显示执行结果数量,执行计划和统计信息。

(4)set autotrace traceonly explain:只显示目标sql的执行计划。

(5)set autotrace tranceonly statistics:只显示目标sql的执行结果数量和统计信息。

三、看懂执行计划

执行计划其实是一颗树,层次最深的先执行,层次相同,上面的先执行。显示的时候已经按照层次缩进。

例如:

在plsql工具中有查看顺序的按钮,如上图红色圈子。

Oracle执行计划总结的更多相关文章

  1. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  2. 【转】Oracle执行计划解释

    Oracle执行计划解释 一.相关的概念     Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物 ...

  3. 看懂Oracle执行计划

    最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...

  4. oracle 执行计划详解

    简介:     本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容.     并有总结和概述,便于理解与记忆! +++ 目录 ---     一.相关的概念    ...

  5. 从Count看Oracle执行计划的选择

    一. 前言 在调查一个性能问题的时候,一个同事问道,为什么数据库有些时候这么不聪明,明明表上有索引,但是在执行一个简单的count的时候居然全表扫描了!难道不知道走索引更快么? 试图从最简单的coun ...

  6. 查看Oracle执行计划的几种方法

    查看Oracle执行计划的几种方法 一.通过PL/SQL Dev工具 1.直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果.其中,Cos ...

  7. [转]Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  8. 【Oracle】【9】阅读oracle执行计划

    正文: 工具:PLSQL 1,配置执行计划需要显示的项 工具→首选项→窗口类型→计划窗口→根据需要配置要显示在执行计划中的列 2,打开执行计划 在SQL窗口执行完一条select语句后按 F5 即可查 ...

  9. 【摘】Oracle执行计划不走索引的原因总结

    感谢原博主 http://soft.chinabyte.com/database/364/12471864.shtml 在Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的 ...

  10. Oracle执行计划 explain plan

    Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值.不过你可以像使用其它列那样 ...

随机推荐

  1. Ascend Pytorch算子适配层开发

    Ascend Pytorch算子适配层开发 适配方法 找到和PyTorch算子功能对应的NPU TBE算子,根据算子功能计算出输出Tensor的size,再根据TBE算子原型构造对应的input/ou ...

  2. 转置卷积Transposed Convolution

    转置卷积Transposed Convolution 我们为卷积神经网络引入的层,包括卷积层和池层,通常会减小输入的宽度和高度,或者保持不变.然而,语义分割和生成对抗网络等应用程序需要预测每个像素的值 ...

  3. LED液晶与OLED:电视显示技术比较

    LED液晶与OLED:电视显示技术比较 LED LCD vs. OLED: TV display technologies compared 到目前为止,LED-LCD是主导的电视显示技术,特别是在等 ...

  4. VB 老旧版本维护系列---迷之集合- ArrayList

    迷之集合- ArrayList '定义一个字符串 Dim dataType_ImageStr As String = "2023,2091,2092,2096,2212" '将字符 ...

  5. fiddler选项卡-Composer(构建请求)

    Composer Composer支持手动构建http.https和ftp请求.点到composer选项卡界面,我们可以看到下面有一串英文. use this page to compose a Re ...

  6. 【NX二次开发】Block UI RGB颜色选择器

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  7. 空闲时间研究一个小功能:winform桌面程序如何实现动态更换桌面图标

    今天休息在家,由于天气热再加上疫情原因,就在家里呆着,空闲时想着,在很早以前(约3年前),产品人员跟我提了一个需求,那就是winform桌面程序的图标能否根据节日动态更换,这种需求在移动APP上还是比 ...

  8. Qt实现基于多线程的文件传输(服务端,客户端)

    1. 效果 先看看效果图 这是传输文件完成的界面 客户端 服务端 2. 知识准备 其实文件传输和聊天室十分相似,只不过一个传输的是文字,一个传输的是文件,而这方面的知识,我已经在前面的博客写过了,不了 ...

  9. 陋居寡闻,初探Github CLI For Windows,开启命令行撸铁时代

    简介 gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to t ...

  10. Elasticsearch的配置学习笔记

    文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器.它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的. ...