我有一个表,我想返回某个列的最常见值。通常,人们会使用经典GROUP BY ... ORDER BY ... LIMIT
来做到这一点。我偶然发现了BigQuery的TOP
函数,我对此感兴趣,因为文档说明它通常更快。但是,文档还说它"可能只返回近似结果"。什么时候发生这种情况,并且当需要准确的结果时,TOP
函数的使用通常是值得的吗?
documentation的完整说明:
TOP是一个功能 GROUP BY子句的替代方案。它用作简化语法 for
GROUP BY ... ORDER BY ... LIMIT ....
一般来说,TOP函数 执行速度比完整... GROUP BY ... ORDER BY ... LIMIT ...
快 查询,但可能只返回近似结果。
答案 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%
同时如果您将运行类似的查询并检查Query Plan Explanation
- 您将看到完全不同的执行模式,可能导致不同的结果,但我无法捕获此类用例