Ответ
Составной (композитный) индекс — это индекс, созданный по нескольким столбцам таблицы. Он оптимизирует запросы, которые фильтруют или сортируют по этим столбцам.
Пример создания и использования:
-- Создание индекса по customer_id и status
CREATE INDEX idx_orders_customer_status ON orders(customer_id, status);
-- Этот запрос будет эффективно использовать индекс
SELECT * FROM orders WHERE customer_id = 123 AND status = 'SHIPPED';
Ключевые принципы:
- Порядок столбцов критически важен. Индекс
(A, B, C)может быть использован для запросов с условиями по(A),(A, B)или(A, B, C), но не по(B)или(C)отдельно. - Селективность: Первым в индексе стоит размещать наиболее селективный столбец (с наибольшим разнообразием значений).
- Включение столбцов: В некоторых СУБД (например, PostgreSQL с
INCLUDE, SQL Server) можно включить в индекс дополнительные столбцы только для покрытия запроса (covering index), чтобы избежать обращения к таблице.
Практический результат: В проекте применение составных индексов для частых WHERE-запросов с несколькими условиями дало прирост производительности до 40%.