EXPLAIN
в PostgreSQL используется для анализа и оптимизации запросов. Он показывает, как оптимизатор собирается выполнять запрос, какие индексы задействованы и какую стоимость имеет каждая операция.
Использование EXPLAIN
Вывод плана выполнения запроса:
EXPLAIN SELECT * FROM orders WHERE status = 'completed';
Показывает структуру выполнения запроса без его фактического выполнения.
EXPLAIN ANALYZE
Выводит фактический план выполнения с реальными показателями времени:
EXPLAIN ANALYZE SELECT * FROM orders WHERE status = 'completed';
Выполняет запрос и показывает точные затраты на выполнение каждой операции.
EXPLAIN VERBOSE
Расширенный вывод с дополнительной информацией:
EXPLAIN VERBOSE SELECT * FROM orders WHERE status = 'completed';
Отображает детальные сведения о планировщике запроса, включая внутренние детали операций.
Анализ плана выполнения
Вывод EXPLAIN
содержит:
- Seq Scan – последовательное сканирование таблицы.
- Index Scan – использование индекса для выборки данных.
- Index Only Scan – использование индекса без обращения к таблице.
- Bitmap Index Scan – комбинация индексного и последовательного сканирования.
- Join – объединение данных из нескольких таблиц.
Оптимизация запросов с EXPLAIN
- Использование индексов для ускорения выборки данных.
- Переписывание сложных запросов для снижения затрат на выполнение.
- Анализ соединений (
JOIN
), чтобы избежать лишних операций сортировки и фильтрации.