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 ...)
Связанные термины
Анекдоты по теме
DBA видит запрос без индекса в production. DBA: (спокойно закрывает ноутбук, встаёт, уходит в закат).
В баре сидит DBA. К нему подходит молодой разработчик: — Я написал запрос на 500 строк. Там 12 уровней вложенных подзапросов, кросс-джойн на 8 таблиц, оконные функции внутри WHERE, а потом GROUP BY на хэш-таблицу с миллиардом строк. Он выполняется 3 дня. Как оптимизировать? DBA, не поднимая глаз от виски: — Очень просто. Пиши: TRUNCATE TABLE career_results. И иди в менеджеры.
Разработчик пишет: SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id JOIN d ON c.id = d.c_id JOIN e ON d.id = e.d_id JOIN f ON e.id = f.e_id DBA: ты только что создал цепочку из 6 JOIN. Разработчик: и что? DBA: надеюсь, у тебя везде есть индексы.