Как работает EXPLAIN ANALYZE?

EXPLAIN ANALYZE показывает план запроса и фактическое выполнение: сколько строк реально прошло через каждый узел и сколько времени заняла каждая операция. Это один из главных инструментов для поиска узких мест в SQL-запросах.
Подробный ответ

Что показывает EXPLAIN ANALYZE

EXPLAIN ANALYZE строит план запроса и затем реально выполняет его, добавляя фактические метрики. В результате можно увидеть, где СУБД ожидала мало строк, а получила много, или где операция заняла неожиданно много времени.

Какие метрики важны

  • cost — оценочная стоимость операции;

  • rows — ожидаемое число строк;

  • actual rows — фактическое число строк;

  • actual time — реальное время выполнения;

  • loops — сколько раз выполнялся узел.

Как читать план

Сначала смотрят на самые дорогие узлы: полный скан таблицы, тяжёлые JOIN, сортировки, хеширование. Потом сравнивают оценку планировщика с реальностью: если есть сильное расхождение, возможно, нужна новая статистика или другой индекс.

Простой пример

EXPLAIN ANALYZE
SELECT *
FROM users
WHERE email = 'test@example.com';

Если вместо Index Scan виден Seq Scan, значит запрос может читать слишком много строк.

Что делать после анализа

На основе плана обычно либо добавляют индекс, либо переписывают запрос, либо обновляют статистику. Иногда проблема в том, что запрос плохо использует индекс из-за функций, неудачного JOIN или слишком широкого SELECT.

Как ответить на собеседовании

EXPLAIN ANALYZE — это команда, которая показывает не только план выполнения, но и реальное время и число строк по каждому узлу. Я использую её, чтобы найти самый дорогой шаг, сравнить ожидание и реальность и понять, нужен ли индекс или переписывание запроса.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге