Performance 如何提高SSRS报告产生的数据库负载

Performance 如何提高SSRS报告产生的数据库负载,performance,reporting-services,ssrs-2008,Performance,Reporting Services,Ssrs 2008,我想知道是否有可能减少SSRS报告产生的数据库负载。 我有一份SSRS报告,由几个子报告组成。它们中的每一个都至少有一个DB查询 它们中的许多查询相同的数据,因为大多数子报表都有一种填充了动态数据的模板头 根据查询是否返回任何数据显示一些子报告。因此,一旦查询了数据,就可以确定是否显示报告。然后报表本身查询相同的数据以在表中显示 通常,我可以看出我需要一种机制将查询到的DB数据从父报表传递到子报表。父报表将查询一些数据,它将迭代数据集,对于每个数据集,它将显示一个子报表,该子报表将当前数据集作为

我想知道是否有可能减少SSRS报告产生的数据库负载。 我有一份SSRS报告,由几个子报告组成。它们中的每一个都至少有一个DB查询

  • 它们中的许多查询相同的数据,因为大多数子报表都有一种填充了动态数据的模板头
  • 根据查询是否返回任何数据显示一些子报告。因此,一旦查询了数据,就可以确定是否显示报告。然后报表本身查询相同的数据以在表中显示
  • 通常,我可以看出我需要一种机制将查询到的DB数据从父报表传递到子报表。父报表将查询一些数据,它将迭代数据集,对于每个数据集,它将显示一个子报表,该子报表将当前数据集作为参数传递

    我找不到传递数据集(数据行)的机制。这就是为什么我通过传递一种数据集ID来显示子报表。子报表本身再次查询相同的数据,根据传递的数据集ID进行过滤,并仅显示相关的数据集。这会给数据库带来巨大的负载


    提前谢谢你

    您描述的设计是相当标准的,我不希望它会导致“数据库上的巨大负载”。我预计运行10个过滤子报表的DB负载只比运行一个包含相同10个项目的报表的DB负载多10-20%


    我会在“数据集ID”列上添加一个索引,以提高筛选效率。

    根据子报表的复杂性,使用查找功能可能是一个可以接受的更快的解决方案。前面关于隐藏没有数据的行或子报表的评论也适用于此处。

    您需要分析特定的查询并进行相应的优化。如果您总共有7个查询正在运行,请分析所有查询,找出导致“数据库负载”的原因并加以修复。如果您担心主/明细类型查询,则需要将报表转换为只运行一个查询,但这可能不可能(或更快)。请注意,如果您重复运行同一查询(即使使用不同的参数),您仍然可以在缓存等方面获得一些效率。谢谢Mike。DB查询的性能相当好,但问题是它们执行了多次(针对多个子报告)。前端代码同时使用DB,我担心在生成报告的过程中,前端的响应速度会降低。因此,玻璃实际上可能是半满的,您可能不会有任何问题,只是担心:-)无论如何,为了减少您的#2场景的影响,我将从父报表中删除这些数据集。在子报表中,如果数据集不返回任何行,我将隐藏所有表等。