加载中...

基于规则的优化器(Rule-Based Optimizer,RBO)依据一组固定的启发式规则决定执行计划,例如"有可用索引就走索引""等值索引访问优先于范围扫描"等,并按规则优先级排序候选路径,不考虑表的实际数据量与分布。
RBO 的优点是实现简单、决策确定,同一条 SQL 在任何数据规模下产生相同计划,便于预测与排查;缺点是无视数据特征:当索引列选择性极差(如性别列)时仍可能选择索引扫描,反而比全表扫描更慢。
随着数据规模与查询复杂度增长,主流数据库均转向基于代价的优化器(CBO)。Oracle 在 10g 中正式废弃 RBO。但规则优化并未消失:现代优化器仍以"规则"形式执行逻辑改写(谓词下推、投影裁剪、外连接消除等),这些确定有益的等价变换先于代价搜索进行,即所谓 RBO 与 CBO 结合的两阶段结构。
一些新兴数据库早期版本(如部分国产与分布式数据库)会先实现 RBO,再逐步补齐统计信息与 CBO 能力。

登录 后参与讨论
暂无讨论,来发表第一条评论吧