> Что можно увидеть в explain-плане запросов в Postgres (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Сбер

Стек: Python

> Пример ответа

В EXPLAIN-плане PostgreSQL отображается дерево узлов, каждый из которых представляет операцию (например, Seq Scan, Index Scan, Hash Join). Для каждого узла показываются:

  • Метод доступа (Seq Scan, Index Scan, Bitmap Heap Scan и т.д.) - как именно читаются данные.
  • Стоимость (cost) - две цифры: стартовая (затраты до выдачи первой строки) и общая (затраты на весь результат). Измеряется в условных единицах.
  • Количество строк (rows) - оценка числа возвращаемых строк (важно для понимания точности статистики).
  • Ширина (width) - средний размер одной строки в байтах.
  • Фильтры (Filter) - условия, применяемые к строкам после чтения (например, WHERE id > 100).
  • Время выполнения (при использовании EXPLAIN ANALYZE) - фактическое время в миллисекундах, включая время на запуск и общее время узла.
  • Количество фактических строк (actual rows) - реальное число строк, обработанных узлом (только с ANALYZE).
  • Повторения (loops) - сколько раз узел выполнялся (важно для вложенных циклов).

Пример вывода:

Seq Scan on users  (cost=0.00..35.50 rows=2550 width=36)
  Filter: (age > 30)

Здесь видно, что используется последовательное сканирование таблицы users с фильтром по возрасту, оценка строк - 2550, стоимость от 0 до 35.5.

Для Python-разработчика понимание планов помогает оптимизировать запросы, особенно при работе с ORM (например, Django ORM), где можно увидеть неожиданные Seq Scan из-за отсутствия индексов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью