2017-03-03 83 views
1

我从非常大的表格创建报表。我创建了一个非常简单的报告,其中只有一个表格。该表似乎允许分页,但每个页面加载需要很长时间,看起来好像它拉动整个表然后在本地分页。SSRS查询分页

我想我可能要分页添加到查询自己,但,这并不工作,因为页面变量只能在页眉或页脚中使用

="SELECT * FROM MyTable OFFSET " & =Globals!PageNumber & " * 20 LIMIT 20" 

以前我没有用过SSRS所以我不确定是否有什么明显的东西我缺少。

任何帮助如何正确地做到这一点将不胜感激。

回答

2

如果您使用任何分页相关表达式,SSRS必须在显示第一页之前检索所有数据。例如,如果您尝试在页脚中执行“页面1中的X”,则SSRS必须在显示页面1之前找出存在多少页面(通过检索并预先呈现所有页面)。

另外,如果您不需要所有的列,请不要使用Select *。这将强制SSRS将每一列加载到其缓存中,即使它们并未全部使用。您可以减少数据检索执行时间。

最后,如果您有权访问SSRS报告数据库,则可以查看报告的执行统计信息以查看性能问题的发生位置。 https://msdn.microsoft.com/en-us/library/ms159110.aspx

+0

谢谢!最终,我意识到SSRS对于我所需要做的并且推出我自己的解决方案来说太痛苦了。有几个其他要求几乎不可能满足它。 – Jonathan

2

SSRS中的全局PageNumber生成后呈现报告。这就是为什么你不能在查询中使用它。

目前尚不清楚你的分页意味着什么。一旦表格超过页面大小,SSRS将自动为报告创建页面。如果您只想查询表格的一小部分,然后单击一个按钮即可获取下一个大块,但没有那么容易获得。

但是,您可以在查询中使用ROW_NUMBER函数,并将其过滤到报表中的特定范围。但是在运行报表之前,您必须指定参数/过滤器的值,因为它使用这些参数来处理数据集,然后继续呈现报表。