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

Работал ли с индексами по условию в БД

Да, работал с индексами по условию (partial/conditional indexes). Они создаются только для строк, удовлетворяющих определенному условию, что уменьшает размер индекса и ускоряет запросы.

Пример для PostgreSQL:

sql
-- Создание индекса только для активных пользователей
CREATE INDEX idx_active_users ON users(email) WHERE status = 'ACTIVE';

В Hibernate можно использовать аннотацию @Where для сущностей, но это не создает индекс на уровне БД. Для создания условного индекса в JPA потребуется нативные SQL-запросы через @NamedNativeQuery или миграционные инструменты (Flyway/Liquibase).

Нюансы:

  • Поддержка зависит от СУБД (PostgreSQL, SQLite — да; MySQL — только через фильтруемые индексы в 8.0+).
  • Условие должно совпадать с WHERE в запросе, иначе индекс не сработает.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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