为啥 clickhouse 同时具有 WHERE 和 PREWHERE 构造?

Posted

技术标签:

【中文标题】为啥 clickhouse 同时具有 WHERE 和 PREWHERE 构造?【英文标题】:Why clickhouse have both WHERE and PREWHERE constructs?为什么 clickhouse 同时具有 WHERE 和 PREWHERE 构造? 【发布时间】:2019-05-03 21:33:37 【问题描述】:

我正在阅读文档,只是对下一步感到好奇:

PREWHERE 就像 WHERE 的优化形式,它在过​​滤之前只读取必要的数据,然后使用这些信息为用户读取所有实际数据。

问题是为什么存在两个关键字?尽可能使用 WHERE 而不是 PREWHERE 似乎是不合理的。是否有任何情况下使用 WHERE 是更好的选择?

【问题讨论】:

【参考方案1】:

PREWHERE 是一种优化,即使您在查询中编写 WHERE 也会自动应用。如果您知道自己在做什么,单独的关键字允许手动调整此优化器行为。

【讨论】:

WHERE 比 PREWHERE 更好时,您能举出具体的例子吗? 假设:在网站上注册的用户按注册时间排序的表格。每行包含用户的性别。 WHERE genger='m' 会比 PREWHERE gender='m' 更有效。

以上是关于为啥 clickhouse 同时具有 WHERE 和 PREWHERE 构造?的主要内容,如果未能解决你的问题,请参考以下文章

ES 不香吗,为啥还要 ClickHouse?

ES 不香吗,为啥还要 ClickHouse?

ClickHouse:从同列名的select中访问源列

为啥在具有多个连接的 WHERE 子句中,子查询比文字值执行得更好?

Clickhouse 返回的时间不正确

Where 子句不适用于 ClickHouse 视图