存储在数据库中数据的分布情况开发人员或管理员比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。

转载:http://blog.itpub.net/23135684/viewspace-710456/

Oracle索引HINT的使用的更多相关文章

  1. 【转】Oracle索引HINT的使用

    转自:Oracle索引HINT的使用       存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...

  2. Oracle索引梳理系列(九)- 浅谈聚簇因子对索引使用的影响及优化方法

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  3. oracle 索引失效原因及解决方法

    oracle 索引失效原因及解决方法 2010年11月26日 星期五 17:10 一.以下的方法会引起索引失效 ‍1,<>2,单独的>,<,(有时会用到,有时不会)3,like ...

  4. oracle索引优化

    零.概述 在这之前,一直都是使用mysql来进行开发或者部署.最近及今后很长一段时间都要使用oracle,今天和同事也遇到一个oracle 慢查询问题.查了很多资料,这里记录备忘.持续更新ing... ...

  5. Oracle 索引扫描的五种类型

    之前在讨论CBO和RBO的时候提到了索引扫描的几种类型. Oracle Optimizer CBO RBO http://blog.csdn.net/tianlesoftware/archive/20 ...

  6. Oracle 常见hint

    Hints 应该慎用,收集相关表的统计信息,根据执行计划,来改变查询方式 只能在SELECT, UPDATE, INSERT, MERGE, or DELETE 关键字后面,只有insert可以用2个 ...

  7. oracle索引监控

    目的:监控oracle索引的有效性,看索引有没有被使用.然后根据监控结果删除或者调整索引. 步骤: 1.监控指定索引 命令: alter index  索引名 monitoring usage;  如 ...

  8. Oracle索引重建

    一.前言 Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.有人持不同观点,就是强烈建议不要定期重建索引.索引重建是一个争论不休被不断 ...

  9. 【转】Oracle索引的类型

    数据库的应用类型分为 OLTP(OnLine Transaction Processing ,联机事务处理):OLTP是传统关系型数据库的主要应用,其主要面向基本的.日常的事务处理,例如银行交易. O ...

随机推荐

  1. 怎么优化JAVA程序的执行效率和性能?

    现在java程序已经够快的了,不过有时写出了的程序效率就不怎么样,很多细节值得我们注意,比如使用StringBuffer或者StringBuilder来拼接或者操作字符串就比直接使用String效率高 ...

  2. HackerRank "Minimum Average Waiting Time" !

    Something to learn: http://blog.csdn.net/yuwenshi/article/details/36666453 Shortest Job First Algori ...

  3. webstorm配置nodejs,bower,git,github

    一,配置nodejs第一大步,首先安装nodejs,安装nodejs的时候,我们需要把所有的组建勾选上,然后选择add to path,这一步会自动帮我们配置环境变量,安装完成后,打开cmd,输入no ...

  4. 51nod 1392 装盒子

    有n个长方形盒子,第i个长度为Li,宽度为Wi,我们需要把他们套放.注意一个盒子只可以套入长和宽分别不小于它的盒子,并且一个盒子里最多只能直接装入另外一个盒子 (但是可以不断嵌套),例如1 * 1 可 ...

  5. [tty与uart]理解线路规程的作用

    转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...

  6. [platform]新旧内核的device设备注册对比

    转自:http://blog.chinaunix.net/uid-7332782-id-3268801.html 1. Version2.6内核启动过程 start_kernel( ) //板子上电启 ...

  7. 深度优化LNMP

    优化前准备工作 Centos准备及配置 准备安装包及软件:http://pan.baidu.com/s/1chHQF  下载解压到U盘即可安装http://pan.baidu.com/s/15TUWf ...

  8. 用imageROI来增加某范围的像素

    //用imageROI来增加某范围的像素 //作者:sandy //时间:2015-10-5 #include <cv.h> #include <highgui.h> int ...

  9. NPOI格式设置

    using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; //创建Execl IWorkbook hssfworkbook =new HSSFWorkbo ...

  10. c#unity

    using UnityEngine;using System.Collections; public class PacmanMove : MonoBehaviour { public float s ...