aggregatin字段与常量的聚合函数

dgiusagp  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(320)

面对以下难题:添加具有常量数值的feild作为feild的一个组还是添加将返回相同数字的aggfunc(performence wize)更好?
例如,我的表:

User   NUM    VALUE    ...
1       5       1
2       7       2
3       9       3
1       5       4
2       7       5
3       9       6

那么使用以下方法是否更好:

Select user, avg(number),...
From table
Group by user

Select user, number, ...
From table
Group by user, number

如果相关的话,使用googlebigquery。期望的结果是上述方法中最好的一种。
谢谢!!

zpjtge22

zpjtge221#

虽然聚合函数的使用可能会因查询的复杂性、数据的大小和所需的输出而异。bigquery使用近似聚合函数计数,聚合函数是可伸缩的,因此速度更快,但输出是近似值。因此,您依赖于您的用例。此外,根据文档,有一些预定义的最佳实践可以提高bigquery中的一般查询性能。
以下是一些需要遵循的最佳实践:
1) 避免选择*:控制查询读取的列数。
2) 使用诸如where或prune之类的过滤器来选择时间窗口。
3) 在使用join之前减少数据。3)
遵循文档中举例说明的最佳实践将提高查询性能。同时,选择最佳的方式来过滤、聚合和连接您的数据,特别是您的案例。

xytpbqjk

xytpbqjk2#

从性能上看,发动机做功越少越好。在这种情况下,第一个查询将比第二个查询占用更少的资源。
另一方面,使用较少的列可以使用范围更广的索引(如果有的话)。优化器可以选择一个更好的索引,因为它的约束较少。

相关问题