oracle的Hint
与优化器模式相关的Hint
1 ALl_ROWS 让优化器启用CBO
/*+ all_rows */
2 first_rows(n) 让优化器启用CBO 模式,而且得到目标sql的执行计划是会选择那些能以最快时间返回n条记录的执行路径
/*+ first_rows */
3 rule 启用RBO
/*+ rule */
与表访问相关
1 /*+ full */ 对目标表执行全表扫描
2 /*+ rowid(tablename) */ 针对单个表的HInt,他的含义是让优化器执行rowid 扫描,只有目标sql中使用了含rowid的where 条件时,rowid hint 才有意义。
与索引访问相关的hint
1 index 对目标表上的目标执行索引扫描操作
/* index (表名 目标索引(可多个)) */
/* index (表名) */
/* index (表名 目标索引对应的列名(可多个)) */
2 no_index 与index 相反
/* no_index (表名 目标索引(可多个)) */
/* no_index (表名) */
3 index_desc 执行索引时,降序扫描
/* index_desc (表名 目标索引(可多个)) */
/* index_desc (表名) */
4 index_combine 对目标表上的多个目标索引执行位图布尔运算
/* index_combine (表名 目标索引(可多个)) */
/* index_combine (表名) */
5 /*+ index_join(表名 目标索引(可多个)) */
/*+ index_join(表名) */
前提条件: select的所有查询列都存在目标表的多个目标索引中
6 and_equal 对目标表的多个目标索引执行 index_merge操作
/*+ and_equal(表名 目标索引(可多个)) */
/*+ and_equal(表名) */
与表连接顺序相关的hint
1 ordered 针对多个目标表,让优化器对多个目标表执行表连接操作时,按照sql的from字句中出现的顺序从左到右依次进行连接
/*+ ordered */
2 leading 针对多个目标表,让优化器将指定的多个表的连接结果作为目标sql表连接过程中的驱动结果集,并且将leading hint 中从左到右出现的第一个目标表作为整个表连接的首个驱动表
/*+ leading(表1 表2 表n) */
与表连接方法相关的Hint
1 use_merge 针对多个目标表,让优化器将我们指定的多个表作为被驱动表与其他表或结果集做排序合并连接
/*+ use_merge(表1 表2 表n) */
/*+ use_merge(表1,表2,...,表n) */
2 no_use_merge 针对多个目标表,不让优化器将我们指定的多个表作为被驱动表与其他表或结果集做排序合并连接
/*+ no_use_merge(表1 表2 表n) */
/*+ no_use_merge(表1,表2,...,表n) */
3 use_nl 针对多个目标表,让优化器将我们指定的多个表作为被驱动表与其他表或结果集做嵌套循环连接
/*+ use_nl(表1 表2 表n) */
/*+ use_nl(表1,表2,...,表n) */
4 no_use_nl 针对多个目标表,不让优化器将我们指定的多个表作为被驱动表与其他表或结果集做嵌套循环连接
/*+ no_use_nl(表1 表2 表n) */
/*+ no_use_nl(表1,表2,...,表n) */
5 use_hash 针对多个目标表,让优化器将我们指定的多个表作为被驱动表与其他表或结果集做哈希连接
/*+ use_hash(表1 表2 表n) */
/*+ use_hash(表1,表2,...,表n) */
6 no_use_hash 针对多个目标表,不让优化器将我们指定的多个表作为被驱动表与其他表或结果集做哈希连接
/*+ no_use_hash(表1 表2 表n) */
/*+ no_use_hash(表1,表2,...,表n) */
7 merge_aj 针对子查询,让优化器对相关目标表执行排序合并反连接
/*+ merge_aj */
8 nl_aj 针对子查询,让优化器对相关目标表执行嵌套循环反连接
/*+ nl_aj */
9 hash_aj 针对子查询,让优化器对相关目标表执行哈希反连接
/*+ hash_aj */
10 merge_sj 针对子查询,让优化器对相关目标表执行排序合并半连接
/*+ merge_sj */
11 nl_sj 针对子查询,让优化器对相关目标表执行嵌套循环半连接
/*+ nl_sj */
12 hash_sj 针对子查询,让优化器对相关目标表执行哈希半连接
/*+ hash_sj */
与查询转换相关的hint
1 use_concat 针对整个SQL的hint ,让优化器对目标sql使用IN_LIST 扩展(IN_List exception )或OR扩展(OR Exception )
/*+ use_concat */
2 no_expand 针对整个SQL的hint ,use_concat 的反义hint
/*+ no_expand */
3 merge 针对单个目标视图的hint,让优化器对目标视图执行视图合并(view merging)
/*+ merge(目标视图) */
如果是内嵌视图,此时的hint不要出现视图名
4 no_merge 针对单个目标视图的hint,是 merge的反义hint
/*+ no_merge(目标视图) */
如果是内嵌视图,此时的hint不要出现视图名
5 unnest 针对子查询的hint,让优化器对目标sql中的子查询执行子查询展开
/*+ unnest */
6 no_unnest 针对子查询的hint,unnest的反义hint
/*+ no_unnest */
7 expand_table 针对单个目标表的hint,让优化器在不考虑成本的情况下对目标表执行表扩展。
/*+ expand_table(目标表) */
8 no_expand_table 针对单个目标表的hint,expand_table的反义hint
/*+ no_expand_table(目标表) */
5 index_ffs 针对单个目标表。 对目标表的目标索引执行索引快速全扫描操作
/* index_ffs (表名 目标索引(可多个)) */
/* index_ffs (表名) */
6 index_join 针对单个目标表。对目标表上的多个目标索引执行 index join 操作
oracle的Hint的更多相关文章
- 【转】Oracle索引HINT的使用
转自:Oracle索引HINT的使用 存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...
- Oracle index hint syntax
Question: I added an index hint in my query, but the hint is being ignored. What is the correct sy ...
- Oracle 常见hint
Hints 应该慎用,收集相关表的统计信息,根据执行计划,来改变查询方式 只能在SELECT, UPDATE, INSERT, MERGE, or DELETE 关键字后面,只有insert可以用2个 ...
- Oracle索引HINT的使用
存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查询路径,一定程度能生成更优的执行计划. ...
- oracle parallel_index hint在非分区表的生效
之前没特别注意,在有些场景下希望使用并行索引扫描的时候,发现parallel_index hint并没有生效,于是抽空看了下文档:The PARALLEL_INDEX hint instructs t ...
- [转]Oracle中Hint深入理解
原文地址:http://czmmiao.iteye.com/blog/1478465 Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明 ...
- Oracle中Hint深入理解(原创)
http://czmmiao.iteye.com/blog/1478465 Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明 ...
- Oracle中Hint深入理解
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...
- oracle 初试 hint
最近在研究oracle的视图问题,本来想全转成 物化视图(materialized view)的,这样可以极大提升系统的响应时间,无奈工作量太大,所以就研究了SQL优化的问题. 我这个普通视图 有36 ...
- oracle中hint 详解
Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...
随机推荐
- GC回收算法
GC回收算法 https://www.cnblogs.com/missOfAugust/p/9528166.html Java语言引入了垃圾回收机制,让C++语言中令人头疼的内存管理问题迎刃而解,使得 ...
- Backbone.js之model篇(一)
Backbone.js之model篇(一) Backbone 是一个前端 JS 代码 MVC 框架,它不可取代 Jquery,不可取代现有的 template 库.而是和这些结合起来构建复杂的 web ...
- Linux终端那件事儿
我们将会讨论如何更好的控制用户终端:也就说是键盘输入与屏幕输出.除了这些,我们还会了解我们编写的程序如何由用户处读取输入,即使是在输入重定向的情况下,以及确保输出到屏幕的正确位置.这里所提供的一些底层 ...
- 初学者遇到的PostgreSQL字符集问题的解决
当初学者在使用PostgreSQL数据库,输入中文时,会遇到“ERROR: invalid byte sequence for encoding "UTF8": 0xd6d0”的 ...
- Java调用未被Static修饰的本类方法
public class Dy { public static void main(String[] args){ int a=6; int b=5; int result=0; Dy dy=new ...
- chromium浏览器开发系列第一篇:如何获取最新chromium源码
背景: 最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧.于是乎,本文顺理成章.由于有些细节必需描述清楚,所以这次先讲如何拿到c ...
- Nginx: 统计PV、UV、独立IP
1.概念: UV(Unique Visitor):独立访客,将每个独立上网电脑(以cookie为依据)视为一位访客,一天之内(00:00-24:00),访问您网站的访客数量.一天之内相同cookie的 ...
- Android App组件之ListFragment -- 说明和示例(转载)
转自:http://www.cnblogs.com/skywang12345/p/3160260.html 1 ListFragement介绍 ListFragment继承于Fragment.因此它具 ...
- 洛谷 P3711 仓鼠的数学题【伯努利数+多项式科技】
有个东西叫伯努利数--一开始直接·用第一类斯特林推到自闭 式子来源:https://www.luogu.org/blog/ShadowassIIXVIIIIV/solution-p3711 https ...
- EasyUI设置Layout自适应浏览器宽度和高度
//设置自适应浏览器宽度和高度 function setLayoutHeight() { var height = $(window).height() - 20; $("#main_lay ...