Кто-нибудь может объяснить немного о плане объяснения и как получить план объяснения для запроса. Кроме того, если есть какой-либо сценарий sql, который можно использовать в качестве утилиты для этого, это было бы здорово.
oracle
oracle-11g-r2
user419534
источник
источник
Ответы:
Вы можете использовать пакет DBMS_XPLAN :
источник
Замените ... вашим оператором SQL. После запуска выполните следующую команду для просмотра плана:
Для получения дополнительной информации см. Разделы « Обзор» или « Использование» в Руководстве по настройке производительности Oracle 11g.
источник
Примерный план выполнения SQL
Предполагаемый план выполнения создается оптимизатором без выполнения запроса SQL. Вы можете сгенерировать примерный план выполнения из любого клиента SQL, используя EXPLAIN PLAN FOR, или вы можете использовать Oracle SQL Developer для этой задачи.
ОБЪЯСНИТЕ ПЛАН ДЛЯ
При использовании Oracle, если вы добавите
EXPLAIN PLAN FOR
команду к заданному SQL-запросу, база данных сохранит примерный план выполнения в связанномPLAN_TABLE
:Чтобы просмотреть примерный план выполнения, вам нужно использовать
DBMS_XPLAN.DISPLAY
, как показано в следующем примере:Oracle SQL Developer
Если вы установили SQL Developer, вы можете легко получить примерный план выполнения для любого SQL-запроса без необходимости добавлять команду EXPLAIN PLAN FOR:
Фактический план выполнения SQL
Фактический план выполнения SQL создается оптимизатором при выполнении запроса SQL. Таким образом, в отличие от предполагаемого плана выполнения, вам необходимо выполнить запрос SQL, чтобы получить его фактический план выполнения.
Фактический план не должен значительно отличаться от предполагаемого, если статистика таблиц была должным образом собрана базовой реляционной базой данных.
Подсказка запроса GATHER_PLAN_STATISTICS
Чтобы указать Oracle хранить фактический план выполнения для данного запроса SQL, вы можете использовать
GATHER_PLAN_STATISTICS
подсказку запроса:Чтобы визуализировать фактический план выполнения, вы можете использовать
DBMS_XPLAN.DISPLAY_CURSOR
:Включить STATISTICS на уровне соединения с БД
Если вы хотите получить планы выполнения для всех запросов, сгенерированных в данном сеансе, вы можете установить
STATISTICS_LEVEL
конфигурацию сеанса на ВСЕ:Это будет иметь тот же эффект, что и
GATHER_PLAN_STATISTICS
указание подсказки для каждого запроса на выполнение. Таким образом, так же, как сGATHER_PLAN_STATISTICS
подсказкой запроса, вы можете использоватьDBMS_XPLAN.DISPLAY_CURSOR
для просмотра фактического плана выполнения.источник