SELECT /*+ DRIVING_SITE(fcr) */
fcr.request_id,
DECODE
(fcpt.user_concurrent_program_name,
'Report Set', fcr.description,
'Request Set Stage', fcr.description,
fcpt.user_concurrent_program_name
) user_concurrent_program_name,
fcr.description, fcr.argument_text, fcr.concurrent_program_id,
fcr.parent_request_id, fcr.actual_start_date,
fcr.actual_completion_date,
ROUND ((fcr.actual_completion_date - fcr.actual_start_date) * 24 * 60,
4
) runtime,
DECODE (fcr.phase_code, 'C', 'No Schedule') program_status,
fu.user_name, frt.responsibility_name, fcr.logfile_name
FROM [email protected]_link fcr,
[email protected]_link fcpt,
[email protected]_link fu,
[email protected]_link frt
WHERE fcr.concurrent_program_id = fcpt.concurrent_program_id
AND fcr.requested_by = fu.user_id
AND fcr.responsibility_id = frt.responsibility_id
AND fcr.responsibility_application_id = frt.application_id
AND fcr.phase_code = 'C'
AND fcr.status_code IN ('C', 'G', 'E', 'X')
AND fcr.actual_completion_date >= SYSDATE - 1/24
AND fcr.requested_by = 1508715
AND fcr.request_id NOT IN (
SELECT parent_request_id
FROM [email protected]_link)
Я написал указанный выше запрос, чтобы получить подробную информацию о программах, которые также являются родительской программой для какой-либо другой программы. Но почему-то этот запрос не возвращает результата. Поэтому вместо этого я написал следующий запрос:Как повысить эффективность ниже запроса?
SELECT /*+ DRIVING_SITE(fcr) */
fcr.request_id,
DECODE
(fcpt.user_concurrent_program_name,
'Report Set', fcr.description,
'Request Set Stage', fcr.description,
fcpt.user_concurrent_program_name
) user_concurrent_program_name,
fcr.description, fcr.argument_text, fcr.concurrent_program_id,
fcr.parent_request_id, fcr.actual_start_date,
fcr.actual_completion_date,
ROUND ((fcr.actual_completion_date - fcr.actual_start_date) * 24 * 60,
4
) runtime,
DECODE (fcr.phase_code, 'C', 'No Schedule') program_status,
fu.user_name, frt.responsibility_name, fcr.logfile_name
FROM [email protected]_link fcr,
[email protected]_link fcpt,
[email protected]_link fu,
[email protected]_link frt
WHERE fcr.concurrent_program_id = fcpt.concurrent_program_id
AND fcr.requested_by = fu.user_id
AND fcr.responsibility_id = frt.responsibility_id
AND fcr.responsibility_application_id = frt.application_id
AND fcr.phase_code = 'C'
AND fcr.status_code IN ('C', 'G', 'E', 'X')
AND fcr.actual_completion_date >= SYSDATE - 1/24
AND fcr.requested_by = 1508715
AND fcr.request_id IN (SELECT request_id FROM [email protected]_link
MINUS SELECT parent_request_id FROM [email protected]_link)
Этот запрос возвращает от 300 до 400 строк каждый раз. Но я не понимаю разницы между этими двумя запросами. Также для выполнения обоих запросов требуется более одного часа. Как повысить эффективность?