SQLLab
ИндексыСредний

EXPLAIN ANALYZE

Реально выполняет запрос и показывает фактическое время и число строк — в сравнении с оценкой планировщика.

Синтаксис
EXPLAIN ANALYZE SELECT ...;
EXPLAIN (ANALYZE, BUFFERS) SELECT ...;

Объяснение

В отличие от обычного EXPLAIN, EXPLAIN ANALYZE запрос РЕАЛЬНО выполняет — и рядом с оценкой планировщика показывает фактические время и число строк на каждом шаге. Именно это расхождение между оценкой и фактом чаще всего указывает на проблему: устаревшую статистику или отсутствующий индекс. Осторожно с UPDATE/DELETE: раз запрос выполняется по-настоящему, данные реально изменятся. Оборачивайте в транзакцию с ROLLBACK, если просто хотите посмотреть план.

Пример

-- Безопасный EXPLAIN ANALYZE для UPDATE
BEGIN;
EXPLAIN ANALYZE
  UPDATE orders SET status = 'expired' WHERE created_at < '2023-01-01';
ROLLBACK;