• Oracle索引HINT的使用


            存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查询路径,一定程度能生成更优的执行计划。

            在SQL的查询过程中,索引是快速查询数据的方法之一,是最重要、最常见的手段,这篇文章将讨论和索引相关的HINT的使用。
    1.HINT的使用方法:
    select /*+ INDEX (tab pk_tab)*/ * from test.tab;
            上面是一个使用HINT简单例子,其中tab是表的名称,pk_tab是索引的名称,如果表有别名,那么应该使用别名。如果表名的前面包含模式名,那么在INDEX的使用过程中不需要指定模式的名称,只需要指定表名即可。
    2.HINT提示:
             在Oracle数据库中索引的使用包括:索引范围扫描、索引跳跃扫描、索引快速全扫描。下面讨论Oracle数据库有关索引的提示,如下表所示,列出了不同扫描方法是用的提示:

    索引 索引范围扫描 索引跳跃扫描 索引快速全扫描
    index index_rs index_ss index_ffs
    index_asc no_index_rs no_index_ss no_index_ffs
    index_desc index_rs_asc index_ss_asc index_asc
      index_rs_desc index_ss_desc index_desc

    下面举例说明不同索引HINT的使用:
    1).使用索引。
    select /*+ INDEX(tab pk_tab)*/ from tab;
            对于这样一条SQL,查询使用索引pk_tab,至于如何扫描索引是Oracle自己决定的。如果能确定使用何种扫描方式最快,可以明确索引的扫描方式:
    select /*+ INDEX_RS(tab pk_tab)*/ from tab;
    select /*+ INDEX_SS(tab pk_tab)*/ from tab;
    select /*+ INDEX_FFS(tab pk_tab)*/ from tab;
    2).不使用索引。
    select /*+ NO_INDEX_RS(tab pk_tab)*/ from tab;
            对于这样一条SQL,查询不使用索引范围扫描,那么将使用表的全表扫描,根据情况还可以使用NO_INDEX_SS和NO_INDEX_FFS,不使用索引跳跃扫描和索引快速全扫描,这样将使用表的全表扫描。
    3).正排序使用索引。
    select * from tab order by id;
            对于这样一条SQL,排序使用的正序,那么可以使用*_asc相关的HINT,例如,select /*+ INDEX_ASC(tab pk_tab)*/ * from tab order by id;INDEX_ASC表示的是按照正向顺序扫描索引。根据不同的情况还可以使用其他扫描类型的*_ASC。
    4).倒排序使用索引。
    select * from tab order by id desc;
            对于这样一条SQL,排序使用的倒序,那么可以使用*_desc相关的HINT,例如,select /*+ INDEX_DESC(tab pk_tab)*/ from tab order by id desc;INDEX_DESC表示的是按照倒向顺序扫描索引。根据不同的情况还可以使用其他扫描类型的*_DESC。

            如果索引中包含了查找的所有列,或者说索引的列就能满足查询需要,就可以使用索引快速全扫描相关的HINT。
  • 相关阅读:
    如何闪开安装VS2013必须要有安装IE10的限制
    Java从键盘输入
    Java基本数据类型和关键字
    openssl windows编译 32位&64位
    eclipse代码提示配置
    手动启动Android模拟器
    Android编程中的实用快捷键
    pat1023. Have Fun with Numbers (20)
    pat1022. Digital Library (30)
    pat1020. Tree Traversals (25)
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/8520171.html
Copyright © 2020-2023  润新知