Seq Scan / Index Scan
Seq Scan — полное сканирование таблицы. Index Scan — поиск через индекс. EXPLAIN показывает какой метод выбран.
EXPLAIN SELECT * FROM table WHERE col = value;Объяснение
Пример
-- Seq Scan (без индекса или маленькая таблица)
EXPLAIN SELECT * FROM users WHERE country = 'RU';
-- -> Seq Scan on users (cost=0.00..1850.00 rows=12000 ...)
-- Index Scan (с индексом)
CREATE INDEX ON users (country);
EXPLAIN SELECT * FROM users WHERE country = 'RU';
-- -> Index Scan using users_country_idx ...)Связанные термины
Анекдоты по теме
— Что такое partial index? — Индекс с условием WHERE. — Зачем? — Индексируй только активных пользователей: CREATE INDEX ON users (email) WHERE is_active = true; — Экономия места и ускорение запросов по активным. — А неактивных много? — 99% базы. Классика.
— Что такое CLUSTER в PostgreSQL? — Физическая перезапись таблицы по порядку индекса. CLUSTER orders USING orders_created_at_idx; — После этого строки физически упорядочены по created_at. — Зачем? — Range queries по дате работают быстрее — меньше random I/O. — Минус? — Не поддерживается автоматически. Новые строки вставляются в случайном порядке.
Что сказал один индекс другому? — Ты меня ускоряешь, но когда дело доходит до вставки, ты просто тормоз!