Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:100万行聚合数据解决方案_Sql_Sql Server_Stored Procedures_Aggregate - Fatal编程技术网

SQL Server:100万行聚合数据解决方案

SQL Server:100万行聚合数据解决方案,sql,sql-server,stored-procedures,aggregate,Sql,Sql Server,Stored Procedures,Aggregate,我们的数据(>1mil行)分布在13个表中 我们有超过15个基于不同列(例如:地区、年份等)的存储过程(分布)和一个用于大量聚合数据的存储过程 这些表有一个唯一的键(int),用于内部联接、此ID上的聚集索引以及聚合和分布查询中使用的列上的覆盖索引 所有这些存储过程在@8分钟内运行,但我需要在1分钟内得到结果 我正在考虑的一种解决方法是在第一次运行后存储分布结果和聚合数据,然后只检索数据而不进行任何计算。这个场景可以很好地工作,但是在存储过程(即动态sp)上我们有过滤器,这使得这个选项有点麻烦

我们的数据(>1mil行)分布在13个表中

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

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

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

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


您对如何最好地实现此方案有何建议?

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

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


尝试创建一系列报告表,理想情况下每个表包含多个报告。最终,每个表都会包含一个列的超集(多于一个报表所需的列),但这将使您在日常维护中获得最大的方便。使用您的报告工具(SSRS?)以及存储的过程来管理带有用户可选参数的筛选

第一个建议是显示一些代码。。。和现有的指数。。。也许执行计划中运行最慢的部分欢迎使用堆栈溢出。这是一个QA站点,这意味着您应该尝试以QA格式格式化请求。这是非常模糊的,我能给出的最好答案是参加DB开发课程。