具有集群和分区的表上的 Bigquery SQL 性能问题

Posted

技术标签:

【中文标题】具有集群和分区的表上的 Bigquery SQL 性能问题【英文标题】:Bigquery SQL Performance issue on tables with cluster and partition 【发布时间】:2020-12-02 04:29:21 【问题描述】:

我在两个带有 where 子句的表之间有一个简单的连接。这两个表都在inserted_date 上进行了分区,并在 numeric_id 列上使用了集群。即使建议了所有性能调整,查询也需要 30 秒,而对于不同的集群列,我能得到的最好的结果是运行 22 秒。不知道我能做些什么来提高性能。

注意:table_1 很长,大约有 100 列

表_1 表大小 - 121.18 MB 行 - 279,567

表_2 表大小 - 148 MB 行 - 864,177

    select q.*,a.product_id
    from table_1 qav
    inner join table_2 a on a.id = qav.application_id
    where a.product_id in (1,5,7,9)

【问题讨论】:

【参考方案1】:

尝试将 a.product_id in (1,5,7,9)where 移动到 on 和 start with the largest table:

select q.*,a.product_id 
from table_2 a inner join table_1 qav
on a.id = qav.application_id 
   and a.product_id in (1,5,7,9)

【讨论】:

感谢您的意见。不幸的是,将过滤器移动到连接只节省了 2-3 秒,而且没有太大的收获。

以上是关于具有集群和分区的表上的 Bigquery SQL 性能问题的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 更新在具有多行的表上合并

bigquery - 自定义字段上的分区 - 仅适用于标准 SQL?

BigQuery 中的表视图是不是受益于分区/集群优化?

如何在大查询中在现有表上创建分区和集群?

bigquery - 小表上的慢查询

SQL Server "<>" 运算符与具有几百万行的表上的 "=" 相比非常慢