Ответ
Как правило, нет. Составной (композитный) индекс эффективен при запросах, которые используют его поля с левой стороны (leftmost prefix rule).
Правило префикса: Индекс по полям (A, B, C) может быть использован для запросов с условиями на:
AA, BA, B, C
Запрос только по полю B или C не сможет эффективно использовать этот индекс для поиска (хотя в некоторых СУБД, например MySQL с InnoDB, может использоваться для index-only scan, если все нужные поля есть в индексе, но это все равно неэффективный полный scan индекса).
Пример (MySQL/PostgreSQL):
-- Создан индекс: CREATE INDEX idx_compound ON users(last_name, first_name, age);
-- ИСПОЛЬЗУЕТ индекс (левое поле last_name):
SELECT * FROM users WHERE last_name = 'Ivanov';
-- НЕ ИСПОЛЬЗУЕТ индекс эффективно для поиска (пропущено last_name):
SELECT * FROM users WHERE first_name = 'Petr'; -- Полный scan индекса или таблицы
Решение: Для запросов, фильтрующих только по first_name, нужно создать отдельный индекс на это поле.