0

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

4

2 に答える 2