面对以下难题:添加具有常量数值的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。期望的结果是上述方法中最好的一种。
谢谢!!
2条答案
按热度按时间zpjtge221#
虽然聚合函数的使用可能会因查询的复杂性、数据的大小和所需的输出而异。bigquery使用近似聚合函数计数,聚合函数是可伸缩的,因此速度更快,但输出是近似值。因此,您依赖于您的用例。此外,根据文档,有一些预定义的最佳实践可以提高bigquery中的一般查询性能。
以下是一些需要遵循的最佳实践:
1) 避免选择*:控制查询读取的列数。
2) 使用诸如where或prune之类的过滤器来选择时间窗口。
3) 在使用join之前减少数据。3)
遵循文档中举例说明的最佳实践将提高查询性能。同时,选择最佳的方式来过滤、聚合和连接您的数据,特别是您的案例。
xytpbqjk2#
从性能上看,发动机做功越少越好。在这种情况下,第一个查询将比第二个查询占用更少的资源。
另一方面,使用较少的列可以使用范围更广的索引(如果有的话)。优化器可以选择一个更好的索引,因为它的约束较少。