Ответ
Составной индекс (композитный индекс) — это индекс, созданный на два или более столбца таблицы. Он оптимизирует запросы, которые используют эти столбцы в условиях WHERE, JOIN или ORDER BY.
Ключевые принципы:
- Порядок столбцов критичен. Индекс работает эффективно только для запросов, использующих префикс индекса (столбцы слева направо).
- Покрывающий индекс (covering index). Если индекс содержит все поля, запрашиваемые в
SELECT, база данных может выполнить запрос, обращаясь только к индексу, без чтения основной таблицы. - Экономия ресурсов. Один составной индекс часто эффективнее нескольких отдельных индексов.
Пример создания и использования (SQL):
-- Создание индекса по фамилии и возрасту
CREATE INDEX idx_users_last_name_age ON users(last_name, age);
-- Эффективные запросы (используют префикс индекса):
SELECT * FROM users WHERE last_name = 'Ivanov';
SELECT * FROM users WHERE last_name = 'Ivanov' AND age = 30;
SELECT * FROM users WHERE last_name = 'Ivanov' ORDER BY age;
-- НЕЭФФЕКТИВНЫЙ запрос (не использует префикс):
SELECT * FROM users WHERE age = 30; -- Индекс не будет использован или будет использован неоптимально
Почему порядок важен? Индекс (A, B, C) хранит данные, отсортированные сначала по A, затем по B, и затем по C. Запрос с условием на B без A не может использовать эту упорядоченность.