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:物化视图。

    二、与B-TREE索引相关的执行计划

    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:应用域索引。

    三、与BIT-MAP索引相关的执行计划

    1、bitmap conversion:将位转换为rowid或相反。

    2、bitmap index:从位图中取一个值或一个范围。

    3、bitmap merge

    4、bitmap minus:

    5、bitmap or:

    四、与表连接相关的执行计划

    1、merge join:排序合并连接。

    2、nested loops:嵌套循环连接。

    3、hash join:哈希连接。

    4、cartesian:笛卡尔积连接。

    5、connect by:层次查询索引,多来自于start with子句。

    6、outer:外链接。

    1)merge join outer:

    2)nested loops outer:

    3)hash join outer:

    7、anti:反连接。

    1)merge join anti:

    2)nested loops anti:

    3)hash join anti:

    8、semi:半连接。

    1)merge join semi:

    2)nested loops semi:

    3)hash join semi:

    五、与集合相关的执行计划

    1、union-all:

    2、union(union-all,sort unique):

    3、concatenation:

    4、intersection:

    5、minus:

    六、与分区相关的索引

    1、partition single:访问单个分区。

    2、partition iterator:访问多个分区。

    3、partition all:访问所有分区。

    4、partition inlist:基于in列表中的值来访问分区。

    七、与sort相关的执行计划

    1、sort unique:排序、去重。

    2、sort join:为merge join的第一步,排序操作,一般与merge join联合使用。

    3、sort aggregate:当分组好的数据上使用分组函数时。

    4、sort order by:单纯的排序

    5、sort group by:排序并分组

    6、buffer sort:对临时结果进行一次内存排序。

    八、其他执行计划

    1、view:

    2、count:

    3、stopkey:目标sql中存在rownum<10这种情况。

    4、hash group by:

    5、inlist iterator:

    6、filter:过滤,相当于处理过的排序合并连接。

    7、remote:与dblink相关的执行计划。

    8、for update:

    9、sequence:使用了oracle序列。

    10、collection iterator:使用了表函数提取记录。

    11、fast dual:访问dual表。

    12、first row:获取查询的第一条记录。

    13、load as select:使用select进行直接路径insert操作,通常加/*+append*/提示。

    14、fixed table:访问固定的(X$/V$)表。

    15、fixed index:访问固定的索引。

    16、window buffer:支持分析函数的内部操作。

  • 相关阅读:
    前端开发小结(持续更新)
    UDP 通讯及内部分析(合集)
    困扰我三天的问题
    Clang Format Style Options (.clang-format 配置文件文档)
    关于共享库的那些事儿
    如何在VMWare的NAT模式下使用traceroute(解析vmnat的行为)
    Linux网络配置
    Ansible Ad-Hoc命令集
    Ansible基础使用
    Ansible部署及配置介绍
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/6656618.html
Copyright © 2011-2022 走看看