首页 > 解决方案 > 加入前修剪与加入后修剪与加入期间修剪

问题描述

当需要对表子集进行表连接时,最佳实践是什么?即考虑以下查询:

WITH pruned AS (
SELECT id FROM foo WHERE timestamp >= TIMESTAMP('some timestamp')
)
SELECT bar.* FROM bar
INNER JOIN foo
ON bar.id = pruned.id
SELECT bar.* FROM bar
INNER JOIN foo
ON bar.id = foo.id
WHERE foo.timestamp >= TIMESTAMP('some timestamp')
SELECT bar.* FROM bar
INNER JOIN foo
ON foo.timestamp >= TIMESTAMP('some timestamp')
AND bar.id = foo.id

我猜最后一个是技术上性能最高的方法?也许这取决于表的数据,但我猜 BigQuerypruned在第一种方法中临时存储表,所以它是最糟糕的?

标签: google-bigquery

解决方案


推荐阅读