整理工作中用到的Hint,不定时更新,Hint是oracle早期因为oracle优化器还不是很完善加上去的,可以辅助oracle优化器,Hint 是Oracle 提供的一种SQL语法,常用于SQL调优,通过Hint强行改变Oracle的执行计划,从而实现sql调优
文章目录
代码语言:txt复制 - [1、/* result_cache */](https://cloud.tencent.com/developer)
- [2、/* connect_by_filtering */](https://cloud.tencent.com/developer)
- [3、/* no_unnset */](https://cloud.tencent.com/developer)
- [4、/* index(表别名 索引名) */](https://cloud.tencent.com/developer)
- [5、/* INDEX_FFS(表别名 索引名) */](https://cloud.tencent.com/developer)
- [6、/* INDEX_DESC(表别名 索引名 ) */](https://cloud.tencent.com/developer)
- [7、/* INDEX_ASC(表别名 索引名) */](https://cloud.tencent.com/developer)
- [8、/* INDEX_COMBINE */](https://cloud.tencent.com/developer)
- [9、/* INDEX_JOIN(表别名 索引名) */](https://cloud.tencent.com/developer)
- [10、/* ADD_EQUAL 表别名 索引名1,索引名2,... */](https://cloud.tencent.com/developer)
- [11、/* ordered use_nl(dept) */](https://cloud.tencent.com/developer)
- [12、/* ALL_ROWS */](https://cloud.tencent.com/developer)
- [13、/* FIRST_ROWS*/](https://cloud.tencent.com/developer)
- [14、/* CHOOSE */](https://cloud.tencent.com/developer)
- [15、/* RULE */](https://cloud.tencent.com/developer)
- [16、/* FULL(TABLE) */](https://cloud.tencent.com/developer)
- [17、/* ROWID(TABLE) */](https://cloud.tencent.com/developer)
- [18、/* USE_HASH(TABLE) */](https://cloud.tencent.com/developer)
- [19、/* no_parallel */](https://cloud.tencent.com/developer)
- [20、/* parallel(表别名,并行度) */](https://cloud.tencent.com/developer)
- [21、/* ROWID(表名) */](https://cloud.tencent.com/developer)
1、/* result_cache */
设置缓存,特殊业务场景才可以使用
2、/* connect_by_filtering */
强制使用联合型的关联型(CONNECT BY WITH FILTERING)
,ps:详情
见:https://cloud.tencent.com/developer/article/1995288
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:
代码语言:javascript复制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) */
将指定的表与其他行源通过哈希连接方式连接起来
19、/* no_parallel */
强制SQL取消并行特性,并行特性有时候很影响系统性能,不要特意使用
20、/* parallel(表别名,并行度) */
并行度是数字的,一般并行特性是比较容易影响系统性能的,不能滥用,除非特殊场景
21、/* ROWID(表名) */
表明对指定表根据ROWID进行访问,ROWID是一个伪列,通过ROWID定位查找速度更快,可以用于SQL调优