在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错误的解决方法和处理过程
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛