0

我们的数据(>100 万行)分布在 13 个表中。

我们有超过 15 个基于不同列(例如:地区、年份等)的存储过程(分布)和一个用于大量聚合数据的存储过程。

这些表有一个唯一键 ( int),用于 INNER JOINS、此 ID 上的聚集索引以及在聚合和分布查询中使用的列上的覆盖索引。

所有这些存储过程都在@8 分钟内运行,但我需要在 1 分钟内得到结果。

我正在考虑的一种解决方法是在第一次运行后存储分布结果和聚合数据,然后只检索数据而不进行任何计算。这种情况可以正常工作,但是在存储过程(即动态 sp)上,我们有过滤器,这使得这个选项有点麻烦。

您对如何最好地处理这种情况有什么建议吗?

4

2 回答 2

0

此方案听起来像是 SQL Server Analysis Services 多维数据集的候选方案。SSAS 允许您聚合数据并对大量数据执行快速分析。希望这可以帮助。

于 2012-11-20T16:48:17.557 回答
0

如果您几乎不需要扩展此解决方案(当前过滤器除外),那么我建议您坚持使用预先支持的报告表。您的系统在数据库方面相对较小,响应时间似乎可以满足您的需要。

尝试创建一系列报告表,理想情况下每个表都包含多个报告。您最终会得到每个表都包含一个超集的列(不止一个报告需要),但这将使您在持续的可维护性方面获得最大的便利。使用您的报告工具(SSRS?)与存储的过程一起使用用户可选择的参数来管理过滤

于 2012-11-20T17:31:22.297 回答