1、/*+ result_cache */
设置缓存,特殊业务场景才可以使用
2、/*+ connect_by_filtering */
强制使用联合型的关联型(CONNECT BY WITH FILTERING) ,ps:详情
见:Orace SQL调优系列之执行计划学习笔记_Nicky's blog-CSDN博客
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) */
将指定的表与其他行源通过哈希连接方式连接起来
19、/*+ no_parallel */
强制SQL取消并行特性,并行特性有时候很影响系统性能,不要特意使用
20、/*+ parallel(表别名,并行度) */
并行度是数字的,一般并行特性是比较容易影响系统性能的,不能滥用,除非特殊场景
作用:能够强行使用自己设置的并行度来执行SQL,提高SQL执行效率。
开启/关闭:alter session enable/disable parallel dml
格式:/*+ parallel(table_short_name,cash_number) */
table_short_name:表的别名,不区分大小写。如果参数1的表别名与from后面表名的别名不一致,则parallel不会生效。
例如:select /*+ parallel(a,10) */ * from tb_user a1;
这里表别名是a1,但在parallel中使用了a,parallel就不生效,应该写为a1。
cash_number:并行度,是一个整型数字。数值的大小与执行效率有关,但并不是越大越好,因为它增大到一定值的时候,再继续增大效率也没有很明显的增大,同时也与占用资源也会增多。
parallel也可用于多表,格式:/*+ parallel(table_short_name1,cash_number1)(table_short_name2,cash_number2) ... */
例如:select /*+ parallel(a1,10)(b1,10) */ * from tb_user a1,tb_manager b1;
基本语法:select/insert/delete/update /*+ parallel(表别名,cash_number) */ 属性列 from 表名 表别名 ...
参考链接:
https://www.cnblogs.com/xingmeng/p/3303761.html
https://blog.csdn.net/andy31688/article/details/84460201
21、/*+ ROWID(表名) */
表明对指定表根据ROWID进行访问,ROWID是一个伪列,通过ROWID定位查找速度更快,可以用于SQL调优