我正在尝试运行一份包含大约5000条记录的报告。 该报告包含一个表格,表格中有1个分组分组。
我的存储过程需要20秒才能运行,但报告大约需要3分钟。 报告大约120页,每页约有30条记录。
这是报告运行的时间还是我错过了什么。
将来我将在此报告中记录超过50,000条记录。所以,我需要知道我能做些什么。
我有以下代码,这些代码将针对每行中的特定列运行:
Function FormatTimer(ByVal seconds As Object) As Object
Dim retVal As Object
Dim days As Integer
Dim hours As Integer
Dim minutes As Integer
If IsNothing(seconds) Then
retVal = ""
Else
retVal = ""
days = Abs(seconds) \ 86400
seconds = seconds - days * 86400
hours = Abs(seconds) \ 3600
seconds = seconds - hours * 3600
minutes = Abs(seconds) \ 60
seconds = seconds - minutes * 60
If days > 0 Then retVal = days.ToString() + "d "
retVal = retVal + Format(hours, "00") + ":" + Format(minutes, "00") + ":" + Format(seconds, "00")
End If
FormatTimer = retVal
If IsNothing(seconds) Then
retVal = ""
Else
retVal = ""
days = Abs(seconds) \ 86400
seconds = seconds - days * 86400
hours = Abs(seconds) \ 3600
seconds = seconds - hours * 3600
minutes = Abs(seconds) \ 60
seconds = seconds - minutes * 60
If days > 0 Then retVal = days.ToString() + "d "
retVal = retVal + Format(hours, "00") + ":" + Format(minutes, "00") + ":" + Format(seconds, "00")
End If
FormatTimer = retVal
当我删除此代码时,我的报告渲染速度更快,差不多30秒。 如果我在每一行中使用这样的函数,它会影响性能吗?
我的报告中也有一个小组,如下所示:
字段!PatientName.Value& " " &安培;菲尔兹!MRN.Value& " "&安培;领域!VisitNumber.Value
我还附上了我的报告的样子。
请让我知道可以做些什么。
感谢。
答案 0 :(得分:0)
确定报告生成所需时间的一种好方法是查询Reporting Services数据库。
在报告服务数据库中有一个名为ExecutionLog的表。此表记录有关每个报告运行的详细信息,包括生成报告所需的时间。
更重要的是,该表提供了生成报告所需时间的详细分类...它记录了TimeDataRetrieval,TimeProcessing和TimeRendering的持续时间。
这将帮助您确定报告执行的哪个阶段花费的时间最多。
如果存储的proc需要20秒才能恢复完整的数据集,那么时间可能是由于在报告表中完成的计算,查找等,或者只是渲染那么多信息所花费的时间。
编辑:查看执行日志表将帮助您确定问题,但它无法解决您的报告运行所需的时间问题。一旦确定问题,请尝试解决问题,或者在您更好地了解导致问题的原因时将问题发回此处。
答案 1 :(得分:0)
你尝试使用Page Break吗?只是一个想法。
您可以向数据区域内的矩形,数据区域或组添加分页符,以控制每页上的信息量。添加分页符可以提高已发布报表的性能,因为在查看报表时只需处理每个页面上的项目。当整个报告是单个页面时,必须先处理所有项目,然后才能查看报告。