> Что можно увидеть в 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 из-за отсутствия индексов.
> Похожие задачи по Python
Какова алгоритмическая сложность добавления элемента в начало и конец списка в Python
В чем разница HTTP методов GET, POST, PUT, DELETE и когда их использовать
Что такое множественное наследование и как работает метод разрешения порядка (MRO) в Python
Использовали ли инструменты для асинхронности в Django, например Celery и Redis
> Похожие задачи по backend
Какова алгоритмическая сложность добавления элемента в начало и конец списка в Python
В чем разница HTTP методов GET, POST, PUT, DELETE и когда их использовать
Что такое множественное наследование и как работает метод разрешения порядка (MRO) в Python
Использовали ли инструменты для асинхронности в Django, например Celery и Redis
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью