关于ob查询改写规则正确的是

关于ob查询改写规则正确的是
A:基于规则+基于代价
B:基于规则
C:基于代价

1 个赞

正确答案:A
OceanBase 的查询改写流程,是 先做基于规则的改写,再做基于代价的改写,二者结合:

  1. 基于规则的改写(RBO):做等价变换、子查询展开、谓词下推、常量折叠等逻辑优化,这类改写是 “确定性” 的,只要满足规则就会执行。
  2. 基于代价的改写(CBO):在规则改写的基础上,结合统计信息计算不同改写方案的执行代价,选择最优的改写方式(例如 or 条件展开为 union all、子查询半连接改写等),这类改写需要代价模型验证,不是所有场景都适用。

因此 OceanBase 的查询改写规则是 基于规则 + 基于代价 两种方式结合的。