Назад к вопросам
СБЕР
Middle
4
Почему PostgreSQL может выбрать Sequential Scan вместо B-tree индекса, даже если индекс есть?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
PostgreSQL может выбрать Sequential Scan вместо использования B-tree индекса по нескольким причинам:
- Небольшой объем данных: если таблица маленькая, последовательное сканирование может быть быстрее, чем использование индекса.
- Высокая селективность запроса: если запрос возвращает большую часть строк, последовательный проход эффективнее.
- Статистика устарела или отсутствует: планировщик может иметь неверные данные о распределении данных.
- Типы условий: некоторые операции или функции не могут эффективно использовать индекс.
- Параметры конфигурации: настройки планировщика могут влиять на выбор плана.
Пример: если таблица содержит 1000 строк, а запрос выбирает 800 из них, PostgreSQL скорее сделает Sequential Scan, так как чтение всей таблицы будет быстрее, чем многократное обращение к индексу и затем к таблице.