Что такое индекс по выражению (functional index)?

Индекс по выражению (functional index) строится не по самому столбцу, а по результату функции или выражения, например LOWER(email). Он помогает, когда запросы часто используют вычисляемое значение в WHERE или ORDER BY.
Подробный ответ

Что это такое

Индекс по выражению — это индекс, который создаётся не на столбце напрямую, а на результате вычисления. Например, можно индексировать LOWER(email), если в запросах часто ищут email без учёта регистра.

Пример

CREATE INDEX idx_users_lower_email
ON users (LOWER(email));

Теперь запрос вида WHERE LOWER(email) = 'test@example.com' может использовать этот индекс.

Когда полезен

  • поиск без учёта регистра, например по LOWER(email);

  • индексация даты без времени, например DATE(created_at);

  • часто используемые вычисляемые поля;

  • сортировка или фильтрация по выражению.

Минусы

Такие индексы занимают место и замедляют запись, как и обычные индексы. Кроме того, запрос должен совпадать с выражением индекса, иначе СУБД его может не использовать.

Как ответить на собеседовании

Индекс по выражению — это индекс на результат функции, например LOWER(email). Он нужен, когда в запросах часто используют вычисляемое значение, и помогает ускорить фильтрацию или сортировку по такому выражению.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге