You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WHERE子句同层级混用AND与OR为何导致分区无法裁剪?

BigQuery分区裁剪失效原因解析

原查询扫描全表(32TB)的核心问题是SQL逻辑运算符的优先级规则:

在SQL语法中,AND的执行优先级高于OR,所以原语句的WHERE条件会被数据库自动解析为:

(date_hit = "2022-10-28" AND event_label LIKE "%entrar%")
OR
(event_label LIKE "%aderir %")

这个逻辑意味着:只要数据满足event_label LIKE "%aderir %",无论date_hit是什么日期,都会被纳入查询范围。这种情况下,数据库无法确定仅需扫描2022-10-28的分区——因为大量其他日期的数据也可能符合第二个OR条件,只能被迫扫描全表所有分区。

而修改后的语句通过括号强制改变了逻辑优先级:

date_hit = "2022-10-28"
AND
(event_label LIKE "%entrar%" OR event_label LIKE "%aderir %")

此时逻辑明确为:必须满足date_hit = "2022-10-28",同时满足两个LIKE条件中的任意一个。数据库可以精准定位到指定日期的分区,自然触发了分区裁剪,仅扫描47GB数据。

内容的提问来源于stack exchange,提问作者Luiscri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:21:34