Performance 如何提高SSRS报告产生的数据库负载
我想知道是否有可能减少SSRS报告产生的数据库负载。 我有一份SSRS报告,由几个子报告组成。它们中的每一个都至少有一个DB查询Performance 如何提高SSRS报告产生的数据库负载,performance,reporting-services,ssrs-2008,Performance,Reporting Services,Ssrs 2008,我想知道是否有可能减少SSRS报告产生的数据库负载。 我有一份SSRS报告,由几个子报告组成。它们中的每一个都至少有一个DB查询 它们中的许多查询相同的数据,因为大多数子报表都有一种填充了动态数据的模板头 根据查询是否返回任何数据显示一些子报告。因此,一旦查询了数据,就可以确定是否显示报告。然后报表本身查询相同的数据以在表中显示 通常,我可以看出我需要一种机制将查询到的DB数据从父报表传递到子报表。父报表将查询一些数据,它将迭代数据集,对于每个数据集,它将显示一个子报表,该子报表将当前数据集作为
提前谢谢你 您描述的设计是相当标准的,我不希望它会导致“数据库上的巨大负载”。我预计运行10个过滤子报表的DB负载只比运行一个包含相同10个项目的报表的DB负载多10-20%
我会在“数据集ID”列上添加一个索引,以提高筛选效率。根据子报表的复杂性,使用查找功能可能是一个可以接受的更快的解决方案。前面关于隐藏没有数据的行或子报表的评论也适用于此处。您需要分析特定的查询并进行相应的优化。如果您总共有7个查询正在运行,请分析所有查询,找出导致“数据库负载”的原因并加以修复。如果您担心主/明细类型查询,则需要将报表转换为只运行一个查询,但这可能不可能(或更快)。请注意,如果您重复运行同一查询(即使使用不同的参数),您仍然可以在缓存等方面获得一些效率。谢谢Mike。DB查询的性能相当好,但问题是它们执行了多次(针对多个子报告)。前端代码同时使用DB,我担心在生成报告的过程中,前端的响应速度会降低。因此,玻璃实际上可能是半满的,您可能不会有任何问题,只是担心:-)无论如何,为了减少您的#2场景的影响,我将从父报表中删除这些数据集。在子报表中,如果数据集不返回任何行,我将隐藏所有表等。