我正在使用从Oracle数据库中选择数据的SQL Server Reporting Services创建报告。报告正在工作,但需要很长时间才能生成(〜75秒)。我已经在我的报告非常简单的查询如下:带有Oracle数据库性能问题的SSRS报告
SELECT
(SELECT COUNT(*)
FROM CALL
WHERE trunc(start_time) >= :Begin_Date
AND trunc(finish_time) <= :End_Date) AS total_calls,
(SELECT COUNT(*)
FROM CALL
WHERE DISCONNECT = 'T'
AND trunc(start_time) >= :Begin_Date
AND trunc(finish_time) <= :End_Date) AS transfered_calls,
(SELECT COUNT(*)
FROM CALL
WHERE DISCONNECT = 'H'
AND trunc(start_time) >= :Begin_Date
AND trunc(finish_time) <= :End_Date) AS hangups
FROM DUAL
现在,我可以用sqlplus *在Oracle中执行这个查询(与填充过程的日期),并在8秒执行。当我尝试在SSRS报告中执行相同的查询时,需要75秒的时间才能生成。我担心的是,我需要添加更多的查询来完成报告,如果生成报告的基本版本需要很长时间,那么完成的报告将无法工作。我该如何提高报告的表现?有任何想法吗?
在此先感谢您的帮助。
+1我会先用这个解决方案。这很简单,你应该如何设计你的查询。如果您仍然遇到性能问题,那么请开始查看其他系统问题(如索引),并可能创建视图或存储特效。 – northpole 2012-02-24 19:16:03
+1如果表已经有start_time和end_time上的索引,那么查询应该能够使用它,如果where子句修改为'where start_time> =:Begin_Date并且结束时间
2012-02-25 08:09:15