パーティション化されたテーブルがあり、検索をいくつかのパーティションに制限しようとしています。これを行うために、次のようなクエリを (レガシー 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 が実際にこのようなクエリのテーブル内のすべてのデータにアクセスしようとする場合。