2015-07-13 4 views
0

У меня есть выбор, который длится долго, и я хочу просмотреть план выполнения запроса, чтобы понять, почему этот запрос работает долго, и какой оператор в SQL-запросе влияет на производительность запроса. Я использую разработчик oracle sql, и я проверил план объяснения для нижеследующего запроса, но не понял его явно, какой оператор выполняет мой запрос, чтобы оптимизировать мой запрос.Объясните план для долгого запроса в oracle sql developer

Select * 
from [email protected]_RETAIL PL 
JOIN [email protected]_RETAIL PT ON PL.PROVISIONING_TASK_ID = PT.ID JOIN [email protected]_RETAIL SER ON PT.SERVICE_ID = SER.ID 
JOIN TEMP_WF_DEF_ALL TT ON SER.SUBSCRIPTION_ID = TT.SUBSCRIPTION_ID 
where PT.CODE='MIGOPT_PACK' and PT.DESCRIPTION Like '%CVB Request' AND PT.PARAMETERS LIKE '%OPERATION=ADD%' AND PL.RESPONSE_TYPE IS NULL AND PL.REQUEST IS NOT NULL 
and ((to_char(PT.START_DATE,'YYYYMMDDHH24Mi') = to_char(TT.COMPLETE_DATE,'YYYYMMDDHH24Mi')) 
or (to_char(PT.START_DATE,'YYYYMMDDHH24Mi') = to_char(TT.COMPLETE_DATE + 1/1440,'YYYYMMDDHH24Mi'))) AND 
PL.TIME_STAMP < SYSDATE - numtodsinterval ( 30,'MINUTE') 
and PL.TIME_STAMP > SYSDATE - numtodsinterval (4,'HOUR') 
AND TT.START_DATE < SYSDATE - numtodsinterval ( 30,'MINUTE') 
and TT.START_DATE > SYSDATE - numtodsinterval (4,'HOUR') 
AND TT.WF_NAME IN 
('Subscribe LIDL Community Flat', 
'LDLMonatsFlatrate Subscribe'); 

план выполнения запроса для приведенного выше запроса: enter image description here

+0

Выполнение ТО_СНАК на поле даты таблицы, чтобы использовать в качестве сравнения может препятствовать использованию индекса. Какова цель этого? «to_char (PT.START_DATE,« YYYYMMDDHH24Mi ») = to_char (TT.COMPLETE_DATE,« YYYYMMDDHH24Mi »))« Вы конвертируете то, что я предполагаю, уже является типом DATE в таблице для символов. – OldProgrammer

+0

Здравствуйте, я удалил это условие даты сейчас, но все еще продолжаю работать. Фактически, когда я подсчитал, он возвращает 3000 строк. – Andrew

ответ

2

Как вы используете сочетание локальных таблиц и удаленных таблиц. Если таблицы в удаленной базе данных больше, чем в локальной базе данных, вам может понадобиться использовать подсказку DRIVING_SITE, чтобы меньший набор таблиц был перемещен в базу данных, выдающую вызов.

DRIVING_SITE