【发布时间】:2021-05-31 01:02:14
【问题描述】:
我正在尝试通过使用聚簇表来优化我们的 BigQuery 模型。
我正在测试这些场景:
- 聚簇表连接聚簇表(通过簇字段连接)
- 非聚簇表联接 非聚簇表(通过与方案 1 相同的字段联接)
不应用任何 where 条件场景 1 和 2 具有相同的成本(处理的时间和字节数)。 当我通过集群字段 1 应用条件时,速度快 4 倍且成本更低。
只有在查询中使用条件时,聚集字段才有用?而不是加入? 在这种情况下,如果我在没有任何条件的情况下执行连接,无论有没有集群,性能都是一样的
如何改进 BigQuery 中两个表之间的联接?
编辑 2021-05-31
添加两个作业的查询执行计划:
【问题讨论】:
-
看看这两个作业的查询执行计划(带有/o 聚集字段)会很有帮助。这可以解释为什么性能没有提升。一个问题:加入时,你是否保持相同的聚集字段顺序?另外,需要加入全表吗?因为如果先过滤再JOIN,可以提高性能和成本。
-
Alvaro,我用两个执行计划更新了帖子。关于加入全表的需要:我正在测试如何执行一个典型的查询,所以对于这个测试是必要的。
标签: sql performance google-bigquery