关于 OceanBase SQL 执行中的谓词下推(Predicate Pushdown)优化,以下说法正确的是?

A. 谓词下推只能发生在对基表的扫描阶段,对于视图、子查询或连接操作后的结果集,无法将过滤条件下推到基表扫描。

B. 在分布式执行计划中,谓词下推可以减少跨节点传输的数据量,优化器会将过滤条件尽可能推到数据源端(如 Table Scan 或 Partition Scan)执行。

C. 当查询涉及分区表且过滤条件包含分区键时,谓词下推等价于分区剪枝,两者是同一个优化过程的不同称呼。

D. 谓词下推优化默认开启且无法关闭,因为它属于执行计划生成的基础规则,用户无权限干预。

2 个赞

解析
谓词下推是优化器将 WHERE 条件中的过滤操作“推”到数据源更早执行的能力。在 OceanBase 分布式执行计划中,这尤为重要:优化器会将过滤条件下推到 Table Scan 节点,甚至在数据通过 EXCHANGE 算子传输前完成过滤,从而大幅减少网络传输的数据量,提升查询性能。

  • A 错误 :谓词下推可以穿透视图、子查询 ,将条件推到最底层的基表扫描。例如,对视图的过滤条件可以被下推到视图定义中的基表上。
  • B 正确 :分布式场景中,谓词下推能显著减少网络 I/O,是 OceanBase 优化器的核心能力之一。
  • C 错误 :谓词下推与分区剪枝是两个不同的优化 。分区剪枝是根据分区键条件确定要扫描的分区集合;谓词下推是在确定分区后,进一步将条件推到扫描过程中,减少返回的行数。两者经常协同作用,但概念不同。
  • D 错误 :用户可以通过 Hint(如 NO_PUSH_PRED禁用 谓词下推,或者通过系统变量 ob_enable_pushdown_filter 控制某些场景的下推行为。D 的“无法关闭”不正确。
2 个赞

正确答案:B

2 个赞