Найти в Дзене
apworks

5 способов посмотреть план выполнения запроса в Oracle SQL

План выполнения показывает, **как Oracle обрабатывает SQL-запрос**: какие индексы использует, в каком порядке соединяет таблицы, как фильтрует данные. Понимание плана — ключ к оптимизации запросов и устранению узких мест. Предсказывает план выполнения запроса. Не исполняет сам запрос. Как использовать: EXPLAIN PLAN FOR SELECT * FROM products WHERE region = 'Россия'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); Когда применять: Для предварительного анализа до запуска запроса. Отличие: Это план по предположению Optimizer, без выполнения. Автоматически выполняет запрос и сразу показывает план и статистику. Как использовать: SET AUTOTRACE ON SELECT * FROM products WHERE NAME LIKE 'Товар%'; Инструменты: SQL*Plus, SQLcl, SQL Developer. Преимущество: Быстро даёт общую картину — план и фактические затраты. Форматирует содержимое PLAN_TABLE. Как использовать: EXPLAIN PLAN FOR SELECT * FROM orders WHERE REGION = 'Европа'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); Плюс: Используется совместно с E
Оглавление

Зачем анализировать план выполнения

План выполнения показывает, **как Oracle обрабатывает SQL-запрос**: какие индексы использует, в каком порядке соединяет таблицы, как фильтрует данные. Понимание плана — ключ к оптимизации запросов и устранению узких мест.

5 способов

1. EXPLAIN PLAN

Предсказывает план выполнения запроса. Не исполняет сам запрос.

Как использовать:

EXPLAIN PLAN FOR
SELECT * FROM products WHERE region = 'Россия';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

Когда применять: Для предварительного анализа до запуска запроса.

Отличие: Это план по предположению Optimizer, без выполнения.

EXPLAIN PLAN
EXPLAIN PLAN

2. UTOTRACE

Автоматически выполняет запрос и сразу показывает план и статистику.

Как использовать:

SET AUTOTRACE ON SELECT * FROM products WHERE NAME LIKE 'Товар%';

Инструменты: SQL*Plus, SQLcl, SQL Developer.

Преимущество: Быстро даёт общую картину — план и фактические затраты.

3. DBMS_XPLAN.DISPLAY

Форматирует содержимое PLAN_TABLE.

Как использовать:

EXPLAIN PLAN FOR
SELECT * FROM orders WHERE REGION = 'Европа';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

Плюс: Используется совместно с EXPLAIN PLAN, но даёт удобный читаемый вывод.

DBMS_XPLAN
DBMS_XPLAN

4. Real-Time SQL Monitoring

Показывает фактический ход выполнения "тяжёлых" запросов.

По умолчанию активируется при >5 сек выполнения или PARALLEL запросах.

Как использовать:

-- Получить активные запросы
SELECT * FROM V$SQL_MONITOR;
-- Посмотреть подробности
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id => '...', type => 'TEXT') FROM DUAL;

Плюс: Подходит для анализа долгих или зависающих запросов.

5. SQL Trace + TKPROF

Трассирует каждый шаг выполнения SQL, фиксирует затраты, вызовы, ожидания.

Как использовать:

ALTER SESSION SET SQL_TRACE = TRUE;
-- выполнить нужный запрос
ALTER SESSION SET SQL_TRACE = FALSE;
-- затем обработать трейс-файл через TKPROF

Когда использовать: Для глубокой отладки, особенно при сложных сценариях.

Сравнения способов просмотра плана выполнения запроса в Oracle SQL

Сравнения способов просмотра плана выполнения запроса в Oracle SQL
Сравнения способов просмотра плана выполнения запроса в Oracle SQL

Полезные ссылки

1. Oracle® Database SQL Tuning Guide (перейти)

  1. 2. DBMS_XPLAN Package перейти (перейти)

3. Технические столбцы в БД

Файлы и скрипты

Исходные файлы можно найти в GIT.

Контакты

Контакты

Написать автору | Telegram | Сайт автора