Что такое Seq Scan (Последовательное сканирование) в PostgreSQL?
Seq Scan
(Sequential Scan, последовательное сканирование) — это когда PostgreSQL просматривает всю таблицу целиком, чтобы найти нужные данные.
Происходит, если:
Нет индекса на нужной колонке.
Запрос возвращает слишком много строк (индекс не даст выигрыша).
PostgreSQL считает, что индексный поиск дороже полного сканирования.
В запросе используется WHERE function(column) = value
(если нет индексного выражения).
Как выглядит Seq Scan
в EXPLAIN ANALYZE
?
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
Seq Scan on users (cost=0.00..1568.00 rows=500 width=50) Filter: (age > 30)
— PostgreSQL сканирует всю таблицу users
.
— Чем больше данных, тем медленнее запрос.
Вывод
Seq Scan
читается вся таблица, поэтому медленно на больших данных.
Используй индексы, чтобы PostgreSQL выбирал Index Scan
.
Следи за планом выполнения (EXPLAIN ANALYZE
).
Обновляй статистику (ANALYZE
), если запросы идут не так, как ожидалось.
Recommended Posts
SKIP LOCKED в PostgreSQL
27.08.2024
Transactional Outbox таблица PostgreSQL
23.04.2024