在SQL Server中聚合数据的最佳做法是什么?

在SQL Server中聚合数据的最佳做法是什么?,sql,sql-server,aggregate,reporting,Sql,Sql Server,Aggregate,Reporting,我有一个太大的源表,查询时间太长,无法直接用于按需报告 我们生成的图表是基于时间的,通常分辨率以月或日为单位,因此我的第一个想法是创建月表和日表,并在这些表中过滤/求和/计数,基本上提前运行所有可能的查询 问题是怎么做。我的第一个想法是编写一个C控制台应用程序来加载一个月的所有数据,然后以某种方式过滤数据集?数据视图?然后将其聚合到列表中?LinqToSQL?然后更新月表和日表 有更好的方法吗?我为这篇文章中缺少代码提前道歉。我写这篇文章是为了在开始编码之前提供建议。我的2分钱是创建一个带有代理

我有一个太大的源表,查询时间太长,无法直接用于按需报告

我们生成的图表是基于时间的,通常分辨率以月或日为单位,因此我的第一个想法是创建月表和日表,并在这些表中过滤/求和/计数,基本上提前运行所有可能的查询

问题是怎么做。我的第一个想法是编写一个C控制台应用程序来加载一个月的所有数据,然后以某种方式过滤数据集?数据视图?然后将其聚合到列表中?LinqToSQL?然后更新月表和日表


有更好的方法吗?我为这篇文章中缺少代码提前道歉。我写这篇文章是为了在开始编码之前提供建议。

我的2分钱是创建一个带有代理键的日历表,并使用SSI聚合数据。

一个最佳实践是用户可以使用的摘要表。这些可以由触发器或定期运行的作业创建。@GordonLinoff什么类型的作业?您是否推荐了一种特定的技术?不过,查询速度慢的原因可能也是因为索引选择不当或不可搜索的子句。SQLServer通常非常擅长快速处理非常大的数据集。同样有趣的是,看到一个执行缓慢的查询SQLWrite一些INSERT语句来聚合这些数据,并每天/每月将新数据插入摘要表,这样服务器就不必对每个请求执行聚合。您可以在中安排作业。我绝对不会写一个程序来做这件事,因为这是非常基本的数据库级的东西或者shell脚本和cronjob@Larnu-以下查询需要1:38才能运行:“从时间戳>='2017-11-11 00:00:00'和时间戳<'2017-11-12 00:00:00:00'的事务中选择SUMAMT