Ключевое слово EXPLAIN
перед SQL-запросом позволяет получить детальную информацию о том, как PostgreSQL планирует выполнить этот запрос “под капотом”. Это полезно для диагностики производительности, поскольку помогает понять, какие шаги выполняет база данных и где могут быть узкие места.
Пример использования EXPLAIN
Вывод информации можно изменить. Например, чтобы получить результат в формате JSON:
Analyze
EXPLAIN
не выполняет сам запрос, поэтому результаты будут приблизительными. Для более точного анализа можно добавить ключевое словоANALYZE
, и тогдаEXPLAIN
также выполнит запрос.
Стоимость выполнения запроса (cost)
PostgreSQL использует условные единицы для обозначения стоимости выполнения запроса — cost
. Один cost
примерно соответствует времени, затраченному на извлечение одного блока данных размером 8 килобайт при последовательном сканировании (Seq Scan).
Часто используются два значения cost
:
- Первое значение: стоимость до начала получения первых результатов.
- Второе значение: полная стоимость выполнения запроса.
Если оценочное значение rows
слишком низкое по сравнению с фактическим количеством строк, это может означать, что статистика таблицы устарела. В таком случае необходимо выполнить ANALYZE
для обновления статистики и улучшения качества планирования запросов.
Виды проходов по таблице и индексу
- Seq Scan: последовательный просмотр всей таблицы. Это наиболее медленный вариант и обычно нежелателен. Решение — добавить индекс, чтобы ускорить выборку данных.
- Index Scan: использование индекса для просмотра таблицы.
- Index Only Scan: использование покрывающего индекса, когда все нужные данные находятся в индексе и не требуется дополнительного доступа к таблице.
- Bitmap Heap Scan: оптимизация с использованием битовых карт для поиска. Сначала строятся битовые карты с использованием нескольких индексов, затем они комбинируются.
- Foreign Scan: сканирование данных на удаленном сервере, используемое при шардировании.
Мета информация
Область:: 00 PostgreSQL
Родитель:: Оптимизация SQL запросов в PostgreSQL
Источник::
Автор::
Создана:: 2024-01-29