【发布时间】:2018-07-11 23:36:29
【问题描述】:
我有一个分区表,并试图将我的搜索限制在几个分区。为此,我正在运行一个查询(使用旧版 SQL),如下所示:
SELECT
*
FROM
[project:dataset.table]
WHERE
_PARTITIONTIME >= "2018-07-10 00:00:00"
AND _PARTITIONTIME < "2018-07-11 00:00:00"
AND col IN (
SELECT
col
FROM
[project:dataset.table]
WHERE
_PARTITIONTIME >= "2018-07-10 00:00:00"
AND _PARTITIONTIME < "2018-07-11 00:00:00"
AND col2 > 0)
我使用_PARTITIONTIME 限制主查询和子查询,所以大查询应该只需要搜索那些分区。当我运行此查询时,虽然我被计费,就好像我只是在不使用_PARTITIONTIME 的情况下查询了整个表一样。为什么会这样?
更新 使用标准 SQL 的等效查询没有此问题,因此使用它作为解决方法。我仍然想知道为什么会发生这种情况。如果这只是一个错误,或者如果旧版 SQL 实际上确实尝试访问表中的所有数据以进行这样的查询。
【问题讨论】:
标签: google-bigquery billing legacy-sql