functional index) строится не по самому столбцу, а по результату функции или выражения, например LOWER(email). Он помогает, когда запросы часто используют вычисляемое значение в WHERE или ORDER BY.
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). Он нужен, когда в запросах часто используют вычисляемое значение, и помогает ускорить фильтрацию или сортировку по такому выражению.
Оцени свой прогресс