Встречается на собеседованиях • сегодня
Почему индексы могут быть незадействованы в PostgreSQL
В PostgreSQL индексы могут не использоваться по нескольким причинам:
-
Низкая селективность - если индекс охватывает слишком много строк (например, булево поле с 50% распределением), оптимизатор может выбрать полное сканирование таблицы.
-
Несоответствие типов - если в запросе используется неявное приведение типов (например, сравнение строки с числом), индекс не будет задействован.
-
Отсутствие статистики - устаревшая или недостаточная статистика может привести к неправильному выбору плана выполнения.
-
Маленькие таблицы - для таблиц с небольшим количеством строк сканирование часто бывает быстрее, чем использование индекса.
Пример:
sql
-- Индекс не будет использован, если поле приводится к другому типу
CREATE INDEX idx_users_phone ON users(phone);
SELECT * FROM users WHERE phone = 12345; -- phone - text, а сравнивается с числом- Использование функций - если поле обернуто в функцию, индекс не используется:
sql
SELECT * FROM users WHERE lower(name) = 'john';- Неоптимальные условия - составные индексы требуют правильного порядка условий в запросе.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы