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;
Связанные термины
Анекдоты по теме
— Что такое Hot Standby? — Replica, которая принимает SELECT запросы пока реплицирует. — Можно писать на реплику? — Нет. Только чтение. — Зачем? — Снять нагрузку чтения с primary: аналитика, отчёты, бэкапы. — А данные всегда свежие? — С небольшой задержкой (lag). Мониторь pg_stat_replication.
— Что такое Bitmap Scan? — Промежуточный шаг. PostgreSQL сначала собирает битмап нужных страниц через индекс, потом читает страницы по порядку. — Зачем? — Когда строк много для Index Scan, но мало для Seq Scan. Лучший I/O паттерн. — Три метода: Seq Scan, Index Scan, Bitmap Index Scan. Оптимизатор выбирает.
Подзапрос говорит JOIN: — Я тоже могу соединять таблицы! JOIN: — Но я делаю это один раз. Подзапрос: — Зато я более читаем! OPTIMIZER: — На самом деле я часто превращаю подзапросы в JOIN сам.