zoukankan      html  css  js  c++  java
  • Oracle执行计划总结

    一、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工具中有查看顺序的按钮,如上图红色圈子。

  • 相关阅读:
    从IRP说起(转)
    IoSkipCurrentIrpStackLocation .(转)
    IO_REMOVE_LOCK使用方法小结(转载加改正)
    TCP释放连接时为什么time_wait状态必须等待2MSL时间
    网络编程之select
    Ubuntu18.04 安装Chrome浏览器
    Ubuntu修改系统时间
    Linux常用命令总结
    struct ifconf和struct ifreq,获取网线插入状态
    一个简单的客户单与服务端程序
  • 原文地址:https://www.cnblogs.com/jnba/p/10677657.html
Copyright © 2011-2022 走看看