5 способов посмотреть план выполнения запроса в Oracle SQL
Зачем анализировать план выполнения
План выполнения показывает, как Oracle обрабатывает SQL-запрос: какие индексы использует, в каком порядке соединяет таблицы, как фильтрует данные. Понимание плана — ключ к оптимизации запросов и устранению узких мест.
5 способов
1. EXPLAIN PLAN
Предсказывает план выполнения запроса. Не исполняет сам запрос.
EXPLAIN PLAN FOR SELECT * FROM demo_products WHERE NAME LIKE 'Товар%'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Когда применять: Для предварительного анализа до запуска запроса.
Отличие: Это план по предположению Optimizer, без выполнения.
2. UTOTRACE
Автоматически выполняет запрос и сразу показывает план и статистику.
SET AUTOTRACE ON SELECT * FROM demo_products WHERE NAME LIKE 'Товар%';
Инструменты: SQL*Plus, SQLcl, SQL Developer.
Преимущество: Быстро даёт общую картину — план и фактические затраты.
3. DBMS_XPLAN.DISPLAY
Что делает: Форматирует содержимое PLAN_TABLE.
EXPLAIN PLAN FOR SELECT * FROM demo_orders WHERE REGION = 'Европа'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
Плюс: Используется совместно с EXPLAIN PLAN, но даёт удобный читаемый вывод.
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® Database SQL Tuning Guide (перейти)
- DBMS_XPLAN Package перейти (перейти)
- Технические столбцы в БД
Файлы и скрипты
Исходные файлы можно найти в GIT.