简述使用CBO,CBO与RULE的区别是什么?

CBO和RULE是Oracle数据库中用于优化查询的两种方式,它们有一些区别。

CBO(Cost-Based Optimization)是基于代价的优化方式,它是Oracle 8i及以后的版本推荐使用的方式。CBO在分析SQL语句时,主要遵循的是Oracle内部预定的一些规则。它根据表及索引的统计信息(如数据大小、行数等)来评估查询的代价,并选择最优的执行计划。在CBO模式下,优化器会根据统计信息判断是否使用索引,如果使用索引的代价低于全表扫描,则会选择使用索引。

RULE(Rule-Based Optimization)是规则优化方式,它遵循简单的分级方法学。当接收到查询时,优化器会评估使用到的要点数目,然后选择最佳级别(最少的数量)的执行路径来运行查询。在RULE模式下,查询优化主要依赖于预设的规则和模式,而不是根据表及索引的统计信息。

在Optimizer_mode=choose时,如果表有统计信息(分区表外),优化器将选择CBO,否则选RBO。

总的来说,CBO和RULE的主要区别在于优化方式的不同。CBO是基于代价的优化方式,根据统计信息评估查询的代价来选择最优的执行计划;而RULE是基于规则的优化方式,根据预设的规则和模式来选择执行路径。

发表评论

后才能评论