【问题标题】:SQL Server : 1 million rows aggregated data solutionSQL Server:100 万行聚合数据解决方案
【发布时间】:2012-11-21 04:05:52
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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

标签: sql sql-server stored-procedures aggregate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 2010-09-05
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多