Проверяет понимание полного сканирования таблицы и причин, по которым оптимизатор может выбрать его вместо индекса.
Full table scan — это операция, при которой база данных последовательно читает все строки таблицы, чтобы найти те, которые соответствуют условиям запроса. Это самый простой способ доступа к данным, но он может быть медленным на больших таблицах.
Оптимизатор запросов выбирает план выполнения на основе статистики и оценок стоимости. Он может предпочесть полное сканирование индексу в следующих случаях:
Рассмотрим таблицу users с 1000 строк. Запрос SELECT * FROM users WHERE age > 18 вернёт почти все строки. Использование индекса по age потребует чтения индекса и затем множества случайных обращений к таблице, что дороже, чем просто прочитать все строки подряд.
EXPLAIN SELECT * FROM users WHERE age > 18;
-- План: Seq Scan on users (cost=0.00..20.00 rows=900 width=...)Если бы таблица была огромной и условие выбирало 1% строк, оптимизатор, скорее всего, использовал бы индекс.
Full table scan — не всегда плохо; для небольших таблиц или запросов с низкой селективностью это оптимально. Понимание, почему EXPLAIN показывает его, помогает правильно проектировать индексы и писать эффективные запросы.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
Postgres
SQL
Ключевые слова
Подпишись на Golang Developer в телеграм