多个数据集的 SSRS 性能

SSRS Performance with multiple datasets

我有两个关于 SSRS 性能的主要问题。我正在合并 10 个 SSRS 报告(10 个摘要 RDL 和 10 个详细 RDL,每个报告有 ~4 tablix)。每个报告都通过一个存储过程来获取结果。现在我们已将所有 tablix 合并到一个 RDL 中,并创建了一个新参数,用户可以在其中 select 他想要打开哪个报告,因此通过可见性 属性 显示 tablix。 现在就性能而言,我想了解更好的地方。以下问题:

  1. 合并后,在一个 RDL 中,我们有 10 个数据集,涉及 10 个不同的过程。我是否应该将所有程序合并为一个程序,并且 运行 根据用户 select 使用 IF Else 条件的参数报告的离子部分程序。 示例用户 select 然后在过程中报告 A IF @report = A --A 的代码 ELSE IF @report = B --B 的代码。 如果我这样做,我是否能够为 10 个报告中的每一个都维护缓存?

  2. 对于 10 个细节 RDL,它又拥有自己的 10 个不同的细节存储过程。将所有详细 Tablix 合并为一个 show/hide tablix 是否是一个好主意,根据来自报告参数的报告的用户 selection。 基本上,我会通过 Action 属性 将报告名称作为参数传递,然后 show/hide 具有 IIF 条件的 tablix。或者我应该为详细报告保留 10 个不同的 RDL。我打开了那个选项。什么对性能更好。

我要做的是 - 假设 10 个 RDL 是 运行ning 10 个不同的存储过程,为每个存储过程分配一个隐藏参数。让我们称之为 @report_number (例如)。因此,对于报告一,在存储过程中,添加一个 where 子句以包含 and @report_number = 1 这应该在技术上停止存储过程 运行ning 一旦它看到一个不同的数字传递(比如报告 2 的 2) ..等等等等..

@report_number 分配在单独的数据集中。
例如

报告 1 - 值 = 1

报告 2 - 值 = 2

.

.

报告 10 - 值 = 10

因此,当用户 运行 报告 1 时,@report_number 的值 1 将传递给该数据集。其余数据集不应 运行 该过程与之关联,因为它们在 where 子句中没有预期值。

希望这是有道理的。