Ответ
Составной индекс — это индекс, созданный по нескольким столбцам таблицы. Он оптимизирует запросы, которые используют фильтрацию, сортировку или соединение по этим столбцам.
Пример создания в SQL:
CREATE INDEX idx_lastname_age ON users(last_name, age);
Ключевые особенности:
- Порядок столбцов критичен. Индекс эффективен для запросов, которые используют:
- Только первый столбец (
WHERE last_name = 'Ivanov'). - Первый и второй столбцы вместе (
WHERE last_name = 'Ivanov' AND age > 30). - Только второй столбец не будет эффективно использовать этот индекс.
- Только первый столбец (
- Поддержка сортировки. Индекс
(A, B)может использоваться для сортировкиORDER BY A, B. - Использование в JPA/Hibernate:
@Entity @Table(indexes = @Index(name = "idx_user_name_age", columnList = "lastName, age")) public class User { private String lastName; private Integer age; }
Зачем это нужно? Один составной индекс часто эффективнее нескольких отдельных для сложных условий WHERE и ORDER BY.