我有一个分区表,并试图将我的搜索限制在几个分区。为此,我正在运行一个查询(使用旧版 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
. 为什么会这样?
UPDATE 使用标准 SQL 的等效查询没有这个问题,所以使用它作为解决方法。我仍然想知道为什么会发生这种情况。如果这只是一个错误,或者如果旧版 SQL 实际上确实尝试访问表中的所有数据以进行这样的查询。