Встречается на собеседованиях • сегодня

Почему индексы могут быть незадействованы в PostgreSQL

В PostgreSQL индексы могут не использоваться по нескольким причинам:

  1. Низкая селективность - если индекс охватывает слишком много строк (например, булево поле с 50% распределением), оптимизатор может выбрать полное сканирование таблицы.

  2. Несоответствие типов - если в запросе используется неявное приведение типов (например, сравнение строки с числом), индекс не будет задействован.

  1. Отсутствие статистики - устаревшая или недостаточная статистика может привести к неправильному выбору плана выполнения.

  2. Маленькие таблицы - для таблиц с небольшим количеством строк сканирование часто бывает быстрее, чем использование индекса.

Пример:

sql
-- Индекс не будет использован, если поле приводится к другому типу
CREATE INDEX idx_users_phone ON users(phone);
SELECT * FROM users WHERE phone = 12345;  -- phone - text, а сравнивается с числом
  1. Использование функций - если поле обернуто в функцию, индекс не используется:
sql
SELECT * FROM users WHERE lower(name) = 'john';
  1. Неоптимальные условия - составные индексы требуют правильного порядка условий в запросе.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы