Вступить в клуб →
лёгкаявопросPostgreSQL, JPA и производительность запросов

Чтение вывода EXPLAIN ANALYZE по медленному запросу

Запрос по таблице заказов стал отвечать за сотни миллисекунд. Выполнили EXPLAIN ANALYZE:

Seq Scan on orders  (cost=0.00..24310.00 rows=1 width=64)
                    (actual time=0.031..142.118 rows=1 loops=1)
  Filter: (external_id = 'ORD-88213')
  Rows Removed by Filter: 999999
Planning Time: 0.094 ms
Execution Time: 142.170 ms

Что говорит этот вывод?

  • Запрос уже использует индекс, но индекс раздут и требует перестроения командой REINDEX
  • Строка rows=1 означает, что запрос оптимален, а задержка возникает уже на стороне приложения
  • Основное время ушло на построение плана запроса, стоит включить кэширование подготовленных планов
  • Запрос читает таблицу целиком и отбрасывает почти все строки фильтром — подходящего индекса по external_id нет

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела