Ответ
Составной индекс (composite index, multi-column index) — это индекс, созданный по двум или более столбцам таблицы. Он оптимизирует запросы, которые используют эти столбцы в условиях WHERE, ORDER BY или JOIN.
Ключевые особенности:
- Порядок столбцов критически важен. Индекс
(A, B, C)эффективен для запросов с условиями на(A),(A, B)или(A, B, C), но не для запросов только по(B)или(C). - Сокращает количество индексов. Один составной индекс может заменить несколько отдельных индексов для частых комбинаций условий.
- Поддерживает сортировку. Может эффективно использоваться для
ORDER BYпо первому или нескольким первым столбцам индекса.
Пример создания в SQL:
-- Создание составного индекса по столбцам `last_name` и `first_name`
CREATE INDEX idx_name ON employees (last_name, first_name);
Пример эффективного запроса:
-- Этот запрос сможет использовать индекс полностью
SELECT * FROM employees
WHERE last_name = 'Smith' AND first_name = 'John';
-- Этот запрос использует только первую часть индекса (last_name)
SELECT * FROM employees
WHERE last_name = 'Smith'
ORDER BY first_name;
Практическое правило: Столбцы в индексе следует располагать в порядке от наиболее селективного (с наибольшим разнообразием значений) к наименее селективному, а также в соответствии с частыми паттернами запросов.