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 */   不进行查询转换。

 


 

 

你可能感兴趣的:(JOIN,优化,merge,nested,parallel,loops)