【发布时间】:2012-11-21 04:05:52
【问题描述】:
我们有分布在 13 个表中的数据(>100 万行)。
我们有超过 15 个基于不同列(例如:地区、年份等)的存储过程(分布)和一个用于大量聚合数据的存储过程。
这些表有一个唯一键 (int),用于 INNER JOINS、此 ID 上的聚集索引以及聚合和分布查询中使用的列上的覆盖索引。
所有这些存储过程在@8 分钟内运行,但我需要在 1 分钟内得到结果。
我正在考虑的一种解决方法是在第一次运行后存储分布结果和聚合数据,然后只检索数据而不进行任何计算。这种情况可以正常工作,但是在存储过程(即动态 sp)上,我们有过滤器,这使得这个选项有点麻烦。
您对如何最好地处理这种情况有什么建议吗?
【问题讨论】:
-
第一个建议是显示一些代码......和现有索引......也许执行计划中运行最慢的部分
-
欢迎堆栈溢出。这是一个 QA 站点,这意味着您应该尝试以 QA 格式格式化请求。这是非常模糊的,我能给出的最佳答案是参加关于数据库开发的课程。
标签: sql sql-server stored-procedures aggregate