我正在尝试优化在同一个表上使用多个存储过程的报表。不幸的是,每个程序都在读取数百万条记录并汇总结果。这是一个非常强烈的报告读取,但每个存储过程都经过优化,可以在SSMS中快速运行。
我可以运行每个存储过程并在10到20秒内获得结果集。当我将它们全部放入SSRS中的一个报告中时,报告会超时。
每个存储过程总共有4个参数。全部定位到同一个表,只是以不同的方式聚合数据。这些表的索引与查询内联。它基于时间,用户和我用于COUNT()DISTINCT和NONDISTINCT的一个维度。
我认为问题在于SSRS在同一个表上同时运行4个程序而不是一个接一个地运行。这是真的?如果是这样,无论如何都要确保SSRS不会并行运行它们?
我唯一的选择是创建已经预先聚合的汇总表。然后只需从该表中运行报告。否则,我猜param嗅探也是可能的。
答案 0 :(得分:6)
默认情况下,SSRS中的数据集是并行执行的。
如果您的所有数据集都引用相同的数据源,那么您可以通过以下方式配置单个连接上数据集的序列化执行:
选中该复选框后,不再并行执行使用相同数据源的数据集。
我希望能解决你的问题。