我有以下查询:
#standardSQL
WITH users AS (
SELECT 1 id, 'pieter' name UNION ALL
SELECT 2 , 'george' UNION ALL
SELECT 3 , 'maggie'
),
invoices AS (
SELECT 1 id, 1 userId, 25.0 amount, 'taxi fee' description UNION ALL
SELECT 2 , 1 , 300.0 , 'conference ticket' UNION ALL
SELECT 3 , 1 , 300.0 , 'hotel room' UNION ALL
SELECT 5 , 3 , 70 , 'airbnb' UNION ALL
SELECT 6 , 3 , 22 , 'concert ticket'
)
SELECT
users.id userId,
users.name userName
FROM
users
LEFT JOIN
invoices ON invoices.userId = users.id
GROUP BY
users.id,
users.name
ORDER BY
users.id
在这种情况下,查询处理器可以轻松优化(省略)LEFT JOIN 和 GROUP BY 的组合。但是,当我查看查询计划时,BigQuery 仍然执行连接。为什么?我怎样才能避免这种行为?
我的用例:我有一个视图,其中包含一些需要此类连接的字段。我不希望在不查询字段时执行连接。
我正在使用standardSQL
方言。