google-bigquery - 加入前修剪与加入后修剪与加入期间修剪
问题描述
当需要对表子集进行表连接时,最佳实践是什么?即考虑以下查询:
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
在第一种方法中临时存储表,所以它是最糟糕的?
解决方案
推荐阅读
- java - WELD - 从扫描 / beans.xml 中排除应用程序范围的 bean
- java - 连续二进制数的连接,模运算讨论行为
- javascript - 使用 XMLHttpRequest 和 PHP 将图像保存到 IIS 服务器
- r - 在 ggplot 中根据线型和颜色添加图例
- elasticsearch - 将 DynamoDB 流索引到弹性搜索
- javascript - 无法使用 Noble 获取通知数据
- python - 如果没有在 python 中列出,则将列表项转换为列表
- qt - QProcess::startDetached shell 在父进程死亡时被杀死,如果父进程是一个 systemd 服务
- python - 扑克 - 判断手牌是否是同花顺?
- java - 正则表达式模式需要帮助 Java toString() 方法