Hint分类总结!

1、和优化器相关的Hint

/*+ rule */RBO:基于规则的优化器
/*+ first_rows(n) */CBO:基于成本的优化器;(将结果集中的前n条记录以最快的速度反馈回来,而其他的结果并不需要同时返回。)
/*+ all_rows */CBO:基于成本的优化器;(用最快的速度将sql执行完毕,将结果集全部返回。)
例子:

select /*+ rule */ * from t where id < 20;
select /*+ first_rows(20) */ * from t where id < 20;
select /*+ all_rows */ * from t where id < 20;

2、访问路劲相关的Hint

/*+ full(t) */对指定的表t通过全表扫描方式访问数据。
/*+ index(t t_ind) */对表t通过访问索引t_ind的方式访问数据,当会导致结果集不完整时,优化器将忽略这个Hint。
/*+ no_index(t t_ind) */对指定的表t不允许使用索引t_ind的方式访问数据。
/*+ index_desc(t t_ind) */对指定的表t使用降序访问索引t_ind的方式访问数据,当会导致结果集不完整时,优化器将忽略这个Hint。
/*+ index_combine(t t_bm) */对指定的表t强制使用位图索引t_bm,当会导致结果集不完整时,优化器将忽略这个Hint。
/*+ index_join(t t_ind t_bm) */当谓词中引用的列上都有索引的时候,可以通过索引关联的方式来访问数据。
/*+ index_ffs(t t_ind) */告诉优化器以INDEX_FFS的方式访问数据,当会导致结果集不完整时,优化器将忽略这个Hint。
/*+ index_ss(t t_ind) */告诉优化器以INDEX_SS的方式访问数据,当会导致结果集不完整时,优化器将忽略这个Hint。

3、表关联顺序的Hint

/*+ leading(t1,t) */指定由哪个作为驱动表,即告诉优化器首先要访问哪个表上的数据,这里是t1。
/*+ ordered */告诉oracle安装from后面的表顺序来选择驱动表。


4、 表关联操作的Hint

/*+ use_nl(t1,t) */当两个表都比较大时,hash join的效率高于nested loops的关联方式。
/*+ use_hash(t1,t) */而nested loops适合当一个关联表比较小的时候。
/*+ use_merge(t1,t) */能够使用merge join的地方,hash join都能发挥更好的性能。
/*+ no_use_hash(t1,t) */禁止使用hash join的连接方式。
/*+ no_use_merge(t1,t) */禁止使用merge join的连接方式。
/*+ no_use_nl(t1,t) */禁止使用nested loops的连接方式。

5、并行执行相关的Hint

/*+ parallel(t 4) */指定sql执行的并行度。
/*+ no_parallel(t) */在sql语句禁止使用并行。

6、其他方面的Hint

/*+ append */让数据库以直接夹在方式将数据加载入库。
*+ synamic_sampling(t 6) */提示sql执行时动态采样的级别(0~10)。




 

7. /*+ MERGE(TABLE) */     能够对视图的各个查询进行相应的合并.
   /*+ NO_MERGE(TABLE) */  对于有可合并的视图不再合并.

select /*+ merge(v) */
 a.emp_no, a.emp_nam, b.dpt_no
  from bsempms a(selet dpt_no, avg(sal) as avg_sal from bsempms b group by dpt_no) v
 where a.dpt_no = v.dpt_no
   and a.sal > v.avg_sal;
   
select a.emp_no, a.emp_nam, b.dpt_no
  from bsempms a (select /*+ no_merge */
                   dpt_no, avg(sal) as avg_sal
                    from bsempms b
                   group by dpt_no) v
 where a.dpt_no = v.dpt_no
   and a.sal > v.avg_sal;

 

8. /*+ NO_UNNEST */    不进行子查询解嵌套转换。
   /*+ NO_QUERY_TRANSFORMATION */   不进行查询转换。

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值