2016-09-05 2 views
0

У меня есть большой скрипт, который я использую для получения информации о сотрудниках, скрипт состоит из множества поисковых запросов и соединений между несколькими таблицами, мне интересно, есть ли в любом случае, что я могу узнать, какая часть скрипта или какой поиск занимает больше времени, и сделать сценарий очень медленным, поэтому я могу только настроить его, а не пытаться настроить весь скрипт, пока не узнаю, какой из них вызывает у меня проблемы.sql oracle Как узнать, какая часть запроса занимает много времени

Я использую oracle 11g.

Заранее спасибо.

+1

Загляните в ['explain plan'] (https://docs.oracle.com/cd/B10501_01/server.920/a96533/ex_plan.htm). – trincot

ответ

1

Используйте EXPLAIN PLAN, чтобы узнать рабочий процесс выполнения, и где наиболее востребованные детали в вашем запросе. Например, если вы используете SQL Developer, вы можете выполнить следующую команду:

explain plan for 
<your query> 

Затем выполните:

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 

Это даст вам результаты в виде таблицы, что-то вроде этого: enter image description here

Вы можете посмотреть время и стоимость, а также типы операций. Например, всякий раз, когда вы видите «Полное сканирование таблицы», это красный знак.

0

Если вы используете Tuning & диагностический пакет на Enterprise Edition вы также можете использовать:

select dbms_sqltune.report_sql_monitor('<your SQL id>',report_level=>'ALL') plan_table_output from dual; 

где ID вашего заявления, экс. dk25xwhpxvnwx, фактическое значение можно найти в v $ sqlarea по столбцу sql_full_text.

Он обеспечивает фактическое время для каждого шага плана выполнения, когда EXPLAIN PLAIN предоставляет только оценки.

+0

Обратите внимание, что для этого вам нужен «Performance and Tuning Pack». Что является ** дополнительным ** вариантом стоимости для Enterprise Edition –

Смежные вопросы