教你快速掌握Oracle中“HINT”的30个用法

文章作者 100test 发表时间 2007:10:10 12:12:39
来源 100Test.Com百考试题网


在SQL语句优化过程中,经常会用到hint,下面我们来介绍一下在SQL优化过程中常见Oracle中"HINT"的30个用法:

1. /* ALL_ROWS*/

表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化。

例如:

SELECT /* ALL _ROWS*/ EMP_NO,EMP_NAM,DAT_IN 

FROM BSEMPMS WHERE EMP_NO=SCOTT.

2. /* FIRST_ROWS*/

表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化。

例如:

SELECT /* FIRST_ROWS*/ EMP_NO,EMP_NAM,

DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT.

3. /* CHOOSE*/

表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量。

表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法。

例如:

SELECT /* CHOOSE*/ EMP_NO,EMP_NAM,

DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT.

4. /* RULE*/

表明对语句块选择基于规则的优化方法。

例如:

SELECT /*  RULE */ EMP_NO,EMP_NAM,DAT_IN 

FROM BSEMPMS WHERE EMP_NO=SCOTT.

5. /* FULL(TABLE)*/

表明对表选择全局扫描的方法。

例如:

SELECT /* FULL(A)*/ EMP_NO,EMP_NAM FROM 

BSEMPMS A WHERE EMP_NO=SCOTT.

6. /* ROWID(TABLE)*/

提示明确表明对指定表根据ROWID进行访问。

例如:

SELECT /* ROWID(BSEMPMS)*/ * FROM BSEMPMS 

WHERE ROWID>=AAAAAAAAAAAAAA

AND EMP_NO=SCOTT.

7. /* CLUSTER(TABLE)*/

提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效。

例如:

SELECT /* CLUSTER */ BSEMPMS.EMP_NO,

DPT_NO FROM BSEMPMS,BSDPTMS

WHERE DPT_NO=TEC304 

AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO.


相关文章


Oracle数据库最重要的部分之一数据字典
教你轻松掌握数据库和实例的启动和关闭
带你正确的理解究竟什么是Pro*C程序?
Oracle重做日志文件损坏或丢失后的恢复
教你快速掌握Oracle中“HINT”的30个用法
解析:在Oracle中创建和维护图形大对象
实例解析:计算Oracle表空间的利用率
教你轻松掌握修改Oracle数据库表的大小
0racle-07445错误的解决方法和处理过程
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛