我有一个复杂的报告从多个表中提取记录。
我在许多地方看到SSRS不允许从单个存储过程返回多个数据表,这就是我创建一个存储过程的原因,我创建了六个从共享数据集中过滤的报表数据集,但是当我在下面运行时查询它显示我的程序执行了六次,这可能导致性能问题。
SELECT TOP 100 *,Itempath,parameters,
TimeDataRetrieval + TimeProcessing + TimeRendering as [total time],
TimeDataRetrieval, TimeProcessing, TimeRendering,
ByteCount, [RowCount],Source, AdditionalInfo
FROM ExecutionLog3 where ItemPath like '%GetServiceCalls%'
ORDER BY Timestart DESC
为了解决这个问题,我删除了所有数据集过滤器并在tablix上应用了过滤器。之后,我可以看到该程序只被调用一次。但这并不会对性能产生太大影响。
现在,我想到的问题是如何才能提高SSRS报告的性能。
注意:我的查询会在13秒内执行,报告需要花费近20分钟才能执行。
请帮我解决此问题。
此致
Dhaval
答案 0 :(得分:3)
我总是发现大型表上的SSRS过滤器会永远占用,而且任何文本通配符都表现得更差。
我的建议是做除了SQL中的排序之外的所有“咕噜咕噜的工作”,然后在SSRS中进行任何排序。
你的一部分问题可能是你有一个大型数据集而你正在执行通配符搜索,当你在like语句的开头有通配符时,这些搜索不能很好地与索引一起使用(例如像'%...)