优化器提示——性能调整手册和参考_oracle

来源:互联网 发布:gson把对象转成json 编辑:程序博客网 时间:2024/06/04 17:59

Hint是Oracle数据库灵活性的体现。由于Hint具有最高的优先级,因此可以通过Hint使优化器根据用户的需要来生成指定的执行计划。

Oracle的hint种类繁多,大致可以分为下面几类:

优化方式和目标:如RULE、CHOOSE、FIRST_ROWS、ALL_ROWS等。

访问路径:如INDEX、FULL、CLUSTER、INDEX_FFS等。

查询转换:如MERGE、USE_CONCAT、NO_EXPAND等。

连接顺序:如ORDERED和STAR。

连接操作:如USE_NL、USE_HASH、USE_MERGE等。

并行执行:如PARALLE、NOPARALLEL、PARALLEL_INDEX等。 

其他类型;如APPEND、UNNEST、CACHE等。

 


使用HINT的两种方式:/*+ HINT */和--+ HINT。

绝大部分HINT会在生效后自动将优化器模式转变为基于代价的方式。这可以用来检查HINT是否最终生效。

另外,根据我的测试,下列这些HINT在9204中不起作用,不清楚是Oracle本身的问题还是我的测试方式有问题:

EXPAND_GSET_TO_UNION;

UNNEST;

PUSH_PRED;

NO_PUSH_PRED;

NO_PUSH_SUBQ。

下面这些文章是对个别HINT的专门的描述:

在RULE模式下NL_AJ和NL_SJ提示无效:http://blog.itpub.net/post/468/24686

通过USE_CONCAT提示想到的:http://blog.itpub.net/post/468/23527

奇怪的Cluster提示:http://blog.itpub.net/post/468/22342