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进行 ...
随机推荐
- 【Codeforces 757B】 Bash's big day
[题目链接] 点击打开链接 [算法] 若gcd(s1,s2,s3....sk) > 1, 则说明 : 一定存在一个整数d满足d|s1,d|s2,d|s3....,d|sk 因为我们要使|s|尽可 ...
- javascript之this指向
情况一: 如果一个函数中有this,但是没有被上一级调用,this指向window 例: function a(){ var num='11'; console.log(this.num); //u ...
- fastText入门
简介fastText是Facebook AI Research在2016年提出的文本分类和词训练的工具.它最大的特点:模型非常简单,训练速度快,并且能够达到与深度学习旗鼓相当的精度. 最近在做一个给微 ...
- 《算法概论》第八章的一些课后题目 关于NP-Complete Problem
8.3 STINGY SAT STINGY SAT is the following problem: given a set of clauses (each a disjunction of li ...
- webpack项目调试以及独立打包配置文件
webpack项目调试 -sourcemap webpack配置提供了devtool这个选项,如果设置为 ‘#source-map’,则可以生成.map文件,在chrome浏览器中调试的时候可以显示源 ...
- 用deamon打开ISO文件,提示命令行错误!!
用deamon打开ISO文件,提示命令行错误!! 解决方法:(没有关联iso文件)重新卸载deamon,再重新安装,在关联iso文件处打对勾,安装完成后即可用
- zabbix 监控mysql状态 -Windows
由于公司爬虫mysql数据库在Windows下面,监控一下: 主要命令:mysqladmin -uroot -proot -h127.0.0.1 ping 2>D:\zabbix\waring. ...
- April Fools Contest 2017 B
Description Programmers' kids solve this riddle in 5-10 minutes. How fast can you do it? Input The i ...
- 线段树+扫描线 HDOJ 5091 Beam Cannon(大炮)
题目链接 题意: 给出若干个点的坐标,用一个W*H的矩形去覆盖,问最多能覆盖几个点. 思路: 这是2014上海全国邀请赛的题目,以前写过,重新学习扫描线.首先把所有点移到第一象限([0, 40000] ...
- 修改dns访问android.com
1.几个常用dns服务器 8.8.8.8 美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器 8.8.4.4 美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器 8.8.4.3 美国 加利福尼 ...