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 ...)Связанные термины
Анекдоты по теме
— Что общего у поиска иголки в стоге сена и SELECT без индекса? — И то и другое занимает вечность. Только в базе стог сена — это миллион строк.
Индекс говорит таблице: — Милая, ты знаешь, я тебя ускоряю в 1000 раз! Таблица (тяжело вздыхая): — А я из-за тебя при каждой вставке торможу. Ты меня перестраиваешь. Мы в toxic relationship. Индекс: — Ничего, я кластерный. Без меня ты вообще куча мусора на диске.
— Что такое CLUSTER в PostgreSQL? — Физическая перезапись таблицы по порядку индекса. CLUSTER orders USING orders_created_at_idx; — После этого строки физически упорядочены по created_at. — Зачем? — Range queries по дате работают быстрее — меньше random I/O. — Минус? — Не поддерживается автоматически. Новые строки вставляются в случайном порядке.