Ответ
План выполнения запроса — это пошаговая инструкция, которую оптимизатор СУБД генерирует для выполнения SQL-запроса. Он описывает последовательность операций (сканирование таблиц, соединения, сортировки) и алгоритмы доступа к данным.
Зачем это нужно? Анализ плана — ключевой метод поиска «узких мест» и оптимизации медленных запросов.
Как получить план в PostgreSQL:
-- Показывает предполагаемый план без выполнения
EXPLAIN SELECT * FROM users WHERE age > 30;
-- Выполняет запрос и показывает фактический план с реальными метриками
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
На что смотреть в выводе EXPLAIN ANALYZE:
- Тип сканирования:
Seq Scan(полное сканирование) vsIndex Scan(сканирование по индексу). - Стоимость (cost): Оценочные затраты на начало и завершение операции.
- Фактическое время выполнения.
- Количество возвращаемых строк (rows).
Практический пример для тестировщика:
-- Запрос без индекса может использовать Seq Scan
EXPLAIN ANALYZE SELECT * FROM orders WHERE total_amount > 1000;
-- Результат: "Seq Scan on orders ..."
-- После создания индекса
CREATE INDEX idx_orders_amount ON orders(total_amount);
EXPLAIN ANALYZE SELECT * FROM orders WHERE total_amount > 1000;
-- Результат должен измениться на: "Index Scan using idx_orders_amount ..."
Вывод для QA: Планы запросов помогают проверять эффективность индексов, выявлять потенциальные проблемы производительности на этапе тестирования и понимать, как СУБД обрабатывает данные.