План выполнения запроса (Query Plan) – дерево операций, с помощью которых СУБД получит результат SQL-запроса: последовательное или индексное чтение таблиц, способы соединения (вложенные циклы, хеш-соединение, слияние), сортировка, агрегация. План выбирает оптимизатор на основе статистики о данных и оценки стоимости.
Как посмотреть
- PostgreSQL: EXPLAIN показывает план, EXPLAIN ANALYZE – план с фактическим временем и числом строк.
- Другие СУБД имеют аналогичные команды и графические инструменты.
Что искать в плане
- Полный просмотр больших таблиц вместо индекса.
- Большое расхождение оценки и фактического числа строк – признак устаревшей статистики.
- Неэффективные способы соединения.
- Сортировки и хеш-таблицы, вытесняемые на диск.
Как улучшить
- Индексы под условия запроса.
- Обновление статистики.
- Переписывание запроса.
- Настройка параметров памяти и оптимизатора.
Инструменты
Средства мониторинга СУБД и APM собирают медленные запросы и их планы, визуализаторы планов помогают находить узкие места.