Чтение вывода 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 нет
