加载中...

谓词下推(Predicate Pushdown)是一项经典的逻辑优化:将 WHERE 中的过滤条件(谓词)沿执行计划树尽量下移,让过滤在靠近数据源的位置尽早执行,从而减少上层算子(连接、聚合、排序)处理的数据量。
其正确性基于关系代数等价变换:选择算子可与投影、连接等算子交换顺序。例如两表连接后再过滤某一表的列,可改写为先过滤该表再连接;外连接场景需谨慎,谓词位置(ON 与 WHERE)语义不同,不能随意下推。
在单机数据库中,谓词下推体现为把条件推到存储引擎层,如 MySQL 的索引条件下推(ICP);在列式存储中,可结合 Parquet/ORC 的统计信息(min/max、字典)跳过整块数据;在大数据与联邦查询场景,计算引擎(Spark、Presto/Trino、Flink)会把谓词下推到底层数据源或远端数据库执行,减少网络传输。
谓词下推与投影裁剪(只读取需要的列)是收益最确定的两类优化,几乎所有查询引擎都默认实施。

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