我正在尝试将现有的Access报告转换为客户端SSRS 2008报告,并且在过滤时遇到了糟糕的性能。
通过一些背景知识,我将简化报告的目的。这是模型的简化视图:
Orgainzation
|
Person
|
Credential
组织有人,有人有证件。该报告列出了按组织分组的人员,其中两个用一个人监听的列是以逗号分隔的组织凭证列表(当然,它们已经标准化存储,但我在程序中将它们连接起来使用普通的FOR XML PATH
技巧检索列表。有了这个,报告工作正常,表现可以接受。问题是现有报告提供了列表中存在的每种凭证类型的摘要以及总数量。
由于两个连接列表不同,我无法单独检索外部结果,只能按它们分组。相反,我必须进行第二次检索,以便按组织获取所有个人凭证类型。这不是问题,SQL很快,但报告是另一个故事。
对于那些在家里得分的人来说,这个人的结果集大约是10,000行,比如500组。组织级别的汇总结果集可能是500个组中的1500-2000行(基本上每个组织有3-4种不同的凭证类型)
主报告以tablix的形式列出,在组页脚中,我必须放置一个子报表来处理凭据的组织级摘要。在子报表中,我添加了一个行筛选器,使用报表参数对组织进行筛选。组页脚中的子报表项采用分组的组织并将其传递给子报表。这是功能,但其性能是不可接受的。渲染关于数据子集(仅200个外部行)的测试报告花了将近30分钟。尝试在整个结果集上运行大约一小时后抛出OutOfMemoryException
,应用程序使用了~900MB的内存。
鉴于主报告没有子报告运行得很快,我假设这必须使用子报告,过滤或两者兼而有之。
所以,这是我的问题:
答案 0 :(得分:0)
鉴于对此问题缺乏回应,我将假设在客户端报告中没有任何可以做的更好的过滤性能。