EXPLAIN / EXPLAIN ANALYZE
EXPLAIN показывает план выполнения запроса. EXPLAIN ANALYZE выполняет запрос и показывает реальное время.
EXPLAIN [ANALYZE] [BUFFERS] SELECT ...; EXPLAIN (FORMAT JSON) SELECT ...;
Объяснение
Пример
-- Безопасный EXPLAIN ANALYZE для UPDATE BEGIN; EXPLAIN ANALYZE UPDATE orders SET status = 'expired' WHERE created_at < '2023-01-01'; ROLLBACK;
Связанные термины
Анекдоты по теме
— Почему LIKE '%слово%' работает медленно? — Потому что % в начале не позволяет использовать индекс. База читает все строки. — Как ускорить? — Full-text search (tsvector/tsquery) или специальный индекс (pg_trgm).
pg_stat_statements — расширение PostgreSQL, которое хранит статистику всех запросов: — calls: сколько раз выполнялся — total_exec_time: суммарное время — rows: строк возвращено SELECT query, calls, total_exec_time / calls AS avg_ms FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10; Вот твои самые дорогие запросы.
Разработчик смотрит на EXPLAIN и видит: cost=0.00..99999.00 rows=1000000 — Это нормально? DBA: (смотрит на часы, потом на разработчика) — Нет.