将聚合函数与视图一起使用的最佳实践是什么?

问题描述 投票:0回答:1

在具有大量数据的sql查询中使用聚合函数和视图的最佳实践是什么

select name , sum(value) from v_transactions Group by name

这个观点有15万条记录

sql sql-server
1个回答
0
投票

如果视图呈现150k行,但需要5分钟来聚合它们,问题在于视图的性能而不是您正在进行的聚合。

  • SELECT * FROM v_transactions可能需要几乎完全相同的时间

视图可能仅针对少量行进行查询

  • FROM v_transaction WHERE some_key = some_value

在这种情况下,尝试查询视图的所有行可能会“误用”它。

视图可能正在执行与查询无关的工作

  • 复杂的计算和连接以生成其他字段

同样,如果视图专门用于生成您未使用的字段,则您对视图的使用可能被视为“滥用”。

在任何情况下,因为它是一个视图,将有一个替代来源聚合。可能是v_transactions从中获取数据的其他视图或表格。

四处询问,找出您可以访问的视图,表格和功能。您可能会或可能不会访问您想要的内容,但在您进行调查之前,您将无法找到答案。

另一种可能性是name字段是昂贵的计算。是否有另一个可以分组的字段?一些与名称相对应的idkey?这将为您提供几种测试性能的选项......

  • SELECT some_id, SUM(value) FROM v_transactions GROUP BY some_id
  • SELECT some_id, name, SUM(value) FROM v_transactions GROUP BY some_id, name
  • SELECT some_id, MAX(name), SUM(value) FROM v_transactions GROUP BY some_id
  • 等等
© www.soinside.com 2019 - 2024. All rights reserved.