Что такое составной индекс (composite index) в базах данных?

«Что такое составной индекс (composite index) в базах данных?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Составной индекс (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;

Практическое правило: Столбцы в индексе следует располагать в порядке от наиболее селективного (с наибольшим разнообразием значений) к наименее селективному, а также в соответствии с частыми паттернами запросов.