PostgreSQL может не использовать индекс для определённого запроса или таблицы по нескольким причинам:
Что может привести к тому, что PostgreSQL устранит или отключит индекс для определенной таблицы или запроса?
PostgreSQL может не использовать индекс для определённого запроса или таблицы по нескольким причинам:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
PostgreSQL может не использовать индекс для определённого запроса или таблицы по нескольким причинам:
- Небольшой объём данных: если таблица очень маленькая, планировщик может решить, что последовательное сканирование быстрее, чем использование индекса.
- Низкая селективность индекса: если индекс не сильно сокращает количество строк (например, много повторяющихся значений), PostgreSQL может отказаться от его использования.
- Статистика устарела или отсутствует: если статистика по таблице неактуальна, планировщик может принять неверное решение.
- Типы запросов и условия: некоторые операции (например, LIKE с шаблоном в начале, функции над индексируемым столбцом) не могут эффективно использовать индекс.
- Параметры конфигурации: настройки, такие как enable_indexscan, могут отключать использование индексов.
- Фрагментация или повреждение индекса: редко, но может повлиять.
Для диагностики стоит использовать EXPLAIN ANALYZE и обновлять статистику командой ANALYZE.