我们有13个表的数据(> 1mil行)。
我们有> 15个基于不同列的存储过程(分发)(例如:region,year等)和大量聚合数据的存储过程。
这些表具有用于INNER JOINS的唯一键(int
),此ID上的聚簇索引以及覆盖聚合和分发查询中使用的列的索引。
所有这些存储过程都在@ 8分钟内运行,但我需要在1分钟内得到结果。
我想到的解决方法是在第一次运行后存储分发结果和聚合数据,然后只需检索数据而无需任何计算。这种情况可以正常工作,但是对于存储过程(动态sp)我们有过滤器,这使得这个选项有点麻烦。
您对如何最好地处理这种情况有什么建议吗?
答案 0 :(得分:0)
此方案听起来像是SQL Server Analysis Services多维数据集的候选者。 SSAS允许您聚合数据并对大量数据执行快速分析。希望这会有所帮助。
答案 1 :(得分:0)
如果您几乎不需要扩展此解决方案(当前过滤器除外),那么我建议您坚持使用预先支持的报告表。您的系统在数据库方面相对较小,响应时间似乎可以满足您的需求。
尝试创建一系列报告表,最好是每个表都包含多个报告。最终每个表都会包含一个列的超集(超过一个报表需要),但这将使您在持续可维护性方面获得最大的便利。使用您的报告工具(SSRS?)和存储过程来管理使用用户可选参数的过滤