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

  • 相关阅读:
    Linux下端口被占用,关掉端口占用的方法
    对于STM32F103的USART的通讯调试
    第一次本地代码提交到github
    SPI的学习和ESP8266的SPI通讯测试
    ubuntu下minicom安装和简单设置使用
    ubuntu18.04下stlink的一种安装方法
    使用arm-none-eabi-gdb报错error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
    在麦芒5手机播放音乐时APPS连上后出现自动重启了(请查找:REBOOT关键字)
    一连上蓝牙后,按音量加键,死机(有LOG)
    启动后,只连上蓝牙后,播放音乐,这时按音量,播放,暂停都没功能(按键是有作用的)
  • 原文地址:https://www.cnblogs.com/jnba/p/10677657.html
Copyright © 2011-2022 走看看