Google BigQuery的TOP函数何时会返回近似结果?

时间:2016-07-26 09:43:46

标签: sql performance google-bigquery

我有一个表,我想返回某个列的最常见值。通常,人们会使用经典GROUP BY ... ORDER BY ... LIMIT来做到这一点。我偶然发现了BigQuery的TOP函数,我对此感兴趣,因为文档说明它通常更快。但是,文档还说它"可能只返回近似结果"。什么时候发生这种情况,并且当需要准确的结果时,TOP函数的使用通常是值得的吗?

documentation的完整说明:

  

TOP是一个功能   GROUP BY子句的替代方案。它用作简化语法   for GROUP BY ... ORDER BY ... LIMIT ....一般来说,TOP函数   执行速度比完整... GROUP BY ... ORDER BY ... LIMIT ...快   查询,但可能只返回近似结果。

1 个答案:

答案 0 :(得分:1)

下面的

可能更适合评论 - 但过于冗长,所以我把它放回答

到目前为止,根据我的经验,简化GROUP BY的替代方案 - 即btw,仅适用于简单的场景:A query that uses the TOP() function can return only two fields: the TOP field, and the COUNT(*) value.

那就是说 - 我没有看到数量上的差异,而我确实看到它运行得更快 因此,请检查下面我对2.5B行的表运行的比较。如您所见 - 计数完全相同,运行时间快15%

enter image description here

enter image description here

同时如果您将运行类似的查询并检查Query Plan Explanation - 您将看到完全不同的执行模式,可能导致不同的结果,但我无法捕获此类用例