Я создаю отчет с использованием служб отчетов SQL Server, который выбирает данные из базы данных Oracle. Отчет работает, но для создания (~ 75 секунд) требуется много времени. У меня есть следующая очень простой запрос в моем докладе:Отчет SSRS с проблемами производительности базы данных Oracle
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
Теперь я могу выполнить этот запрос в Oracle с использованием Sqlplus * (с датами заполненных конечно) и он выполняет примерно 8 секунд. Когда я пытаюсь выполнить тот же запрос в отчете SSRS, для генерации требуется 75 секунд. Моя забота заключается в том, что мне нужно добавить еще много запросов для завершения отчета, и если это займет так много времени, чтобы сгенерировать эту базовую версию отчета, законный отчет не будет работать. Как повысить эффективность отчета? Есть идеи?
Заранее за вашу помощь.
+1 Я бы пошел с этим решением первым. Это просто и как вы ДОЛЖНЫ разрабатывать свой запрос. Если у вас по-прежнему возникают проблемы с производительностью, начните изучать другие системные проблемы (например, индексы) и, возможно, создавать представления или хранимые процедуры. – northpole
+1 Если таблица уже имеет индекс в start_time и end_time, тогда запрос должен иметь возможность использовать его, если предложение where изменяется в 'where start_time> =: Begin_Date и заканчивает время