【问题标题】:BigQuery: join on clusters fieldsBigQuery:加入集群字段
【发布时间】:2021-05-31 01:02:14
【问题描述】:

我正在尝试通过使用聚簇表来优化我们的 BigQuery 模型。

我正在测试这些场景:

  1. 聚簇表连接聚簇表(通过簇字段连接)
  2. 非聚簇表联接 非聚簇表(通过与方案 1 相同的字段联接)

不应用任何 where 条件场景 1 和 2 具有相同的成本(处理的时间和字节数)。 当我通过集群字段 1 应用条件时,速度快 4 倍且成本更低。

只有在查询中使用条件时,聚集字段才有用?而不是加入? 在这种情况下,如果我在没有任何条件的情况下执行连接,无论有没有集群,性能都是一样的

如何改进 BigQuery 中两个表之间的联接?

编辑 2021-05-31

添加两个作业的查询执行计划:

  1. Clustered

  2. Non-clustered

【问题讨论】:

  • 看看这两个作业的查询执行计划(带有/o 聚集字段)会很有帮助。这可以解释为什么性能没有提升。一个问题:加入时,你是否保持相同的聚集字段顺序?另外,需要加入全表吗?因为如果先过滤再JOIN,可以提高性能和成本。
  • Alvaro,我用两个执行计划更新了帖子。关于加入全表的需要:我正在测试如何执行一个典型的查询,所以对于这个测试是必要的。

标签: sql performance google-bigquery


【解决方案1】:

来自docs,我想说的是,当您在加入期间使用另一列进行比较时,集群将被简单地忽略。

现在,为了优化连接,您可以尝试在连接之前减少数据。例如,尝试过滤表,或预先聚合它们以尽可能多地减少数据。最后,还要注意连接上表的顺序。从大到小排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多