Составным называется индекс, который включает в себя сразу несколько полей. Он используется для повышения производительности запросов, которые фильтруют данные по нескольким колонкам одновременно.
В составных индексах важен порядок столбцов. Порядок колонок в индексе влияет на его эффективность, и более селективные поля должны идти первыми, чтобы максимизировать производительность. SQL-запросы также должны следовать этому порядку для оптимального использования индекса.
При поиске по составному индексу значения колонок сравниваются по порядку, что делает порядок следования колонок критически важным для эффективности запросов.
Количество параметров
Составной индекс из 2-3 полей обычно считается нормальным и эффективно поддерживаемым. Если количество колонок в индексе превышает три, следует тщательно анализировать его использование, чтобы избежать излишней нагрузки на производительность.
Преимущества:
- Оптимизация дискового пространства: Один составной индекс может заменить несколько простых индексов, что экономит дисковое пространство.
- Ускорение запросов: Составной индекс позволяет ускорять запросы, которые используют несколько колонок для фильтрации и сортировки данных.
Недостатки:
- Высокие накладные расходы при обновлении: Каждый раз при вставке, обновлении или удалении данных, которые попадают в составной индекс, СУБД должна обновлять весь индекс, что может увеличивать время выполнения таких операций.
- Старайтесь минимизировать использование неравенств в начале составных индексов, так как это может ограничить их применение для последующих колонок.
Создание составного индекса:
Запросы, которые могут использовать этот индекс:
Фильтрация по обоим полям:
Этот запрос будет максимально эффективен, так как учитывает оба поля в порядке, указанном в индексе.
Фильтрация только по customer_id
:
Этот запрос также будет использовать индекс, поскольку customer_id
— первая колонка в составном индексе.
Запрос, который не будет оптимально использовать составной индекс:
Такой запрос не использует весь потенциал индекса, так как order_date
не является первой колонкой.
Мета информация
Область:: 00 Базы Данных
Родитель:: Индекс базы данных
Источник::
Автор::
Создана:: 2024-06-16