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