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

来源:互联网 发布:网络直播用英语怎么说 编辑:程序博客网 时间:2024/05/16 04:25

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

原创粉丝点击