整理工作中用到的Hint,不定时更新,Hint是oracle早期因为oracle优化器还不是很完善加上去的

,可以辅助oracle优化器

1、/*+ result_cache */

设置缓存,特殊业务场景才可以使用

2、/*+ connect_by_filtering */

强制使用联合型的关联型(CONNECT BY WITH FILTERING)

,ps:详情

见:https://smilenicky.blog.csdn.net/article/details/89604262

3、/*+ no_unnset */

双重否定表示肯定,即让子查询展开,让它嵌套(nest)在里面

4、/*+ index(表别名 索引名) */

强制索引,有时候可以使用,不过有时候可以关了基数反馈机制

5、/*+ INDEX_FFS(表别名 索引名) */

对指定的表执行快速全索引扫描,而不是全表扫描的办法

6、/*+ INDEX_DESC(表别名 索引名 ) */

表明对表选择索引降序的扫描方法

7、/*+ INDEX_ASC(表别名 索引名) */

表明对表选择索引升序的扫描方法

8、/*+ INDEX_COMBINE */

为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布

尔组合方式

9、/*+ INDEX_JOIN(表别名 索引名) */

提示明确命令优化器使用索引作为访问路径

10、/*+ ADD_EQUAL 表别名 索引名1,索引名2,... */

提示明确进行执行规划的选择,将几个单列索引的扫描合起来

eg:

SELECT /*+INDEX_FFS(e IN_ENAME,IN_DEPTNO)*/
*
FROM emp e
WHERE e.ename = 'CLERK'
AND e.deptno = '20';

11、/*+ ordered use_nl(dept) */

强制使用联合型的关联型(NL),将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表

12、/*+ ALL_ROWS */

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

13、/+FIRST_ROWS/

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

14、/*+ CHOOSE */

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

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

15、/*+ RULE */

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

16、/*+ FULL(TABLE) */

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

17、/*+ ROWID(TABLE) */

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

18、/*+ USE_HASH(TABLE) */

将指定的表与其他行源通过哈希连接方式连接起来

05-11 13:16