【问题标题】:BigQuery Select with Limit equivalent具有等效限制的 BigQuery Select
【发布时间】:2020-03-23 00:44:54
【问题描述】:

有谁知道 BigQuery 中此类查询的最佳性能是什么?

SELECT lastUpdated
FROM `test_db.test_dataset.Customers`
ORDER BY lastUpdated DESC
LIMIT 1

它工作正常并按日期获取最后一个结果,但是我有点担心 BigQuery 的限制:

查询完成(经过 0.3 秒,已处理 2.9 MB)

有没有什么方法可以运行类似的查询而无需花费太多的处理?

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    如果您担心“支出”,请在 BigQuery 查询中只考虑两件事:

    1. 扫描了多少列?您可以通过仅选择查询绝对需要的列进行优化。另外,如果列是 RECORD 类型,仅选择子列也会有所帮助
    2. 扫描了多少行?请注意,“LIMIT/WHERE/ORDER BY”不会更改 BigQuery 中将扫描的行数partitioningclustering 是可以减少扫描行数的 2 个因素。在您的情况下,lastUpdated 聚类肯定会在您的表将来增长时有所帮助。

    【讨论】:

      【解决方案2】:

      我建议改用MAX()

      SELECT MAX(lastUpdated)
      FROM `test_db.test_dataset.Customers`;
      

      我发现 BigQuery 中的 ORDER BY 并不总是针对并行环境进行优化。无论如何,我认为MAX() 更清楚您的查询在做什么。

      【讨论】:

        猜你喜欢
        • 2017-11-07
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多