谓词下推如何正常工作?

问题描述 投票:-1回答:1

任何人都可以用例子来解释谓词下推是如何工作的吗?

hadoop parquet orc
1个回答
2
投票

假设您要执行查询

SELECT 
  SUM(price) 
FROM sales 
WHERE 
  purchase_date BETWEEN '2018-01-01' and '2018-01-31';

查询引擎的一个非常简单的实现是遍历所有镶木地板/ orc文件,反序列化pricepurchase_date列,在purchase_date上应用谓词并对过滤后的行求和。

Parquet(不确定orc)维护每个文件中列的统计信息,因此如果执行引擎足够智能,它可以查看统计信息中purchase_date的最小值/最大值,并确定是否有任何行匹配。例如,如果purchase_date.min=2014-05-05purchase_date.max=2014-05-06,它可以推断谓词将始终评估为false。

换句话说,它可以通过组合统计信息和过滤谓词来跳过镶木地板文件。这可以带来巨大的性能提升,因为IO(文件或内存)通常是瓶颈。增益与选择性(匹配行的百分比)成反比。

术语谓词下推来自于您使用谓词“暗示”扫描运算符的事实,该谓词随后将用于过滤感兴趣的行。或者,将谓词推送到扫描。

© www.soinside.com 2019 - 2024. All rights reserved.