Каковы общие правила использования составных индексов? Когда вы должны использовать их, и когда вам следует избегать их?
Когда использовать составные индексы?
Ответ 1
Запрос, который выбирает только несколько полей, может полностью работать с индексом. Например, если у вас есть индекс (OrderId), для этого запроса потребуется поиск в таблице:
select Status from Orders where OrderId = 42
Но если вы добавите составной индекс в (OrderId, Status), то он может получить всю необходимую информацию из индекса.
Сортировка по нескольким столбцам может извлечь выгоду из составного индекса. Например, индекс в (LastName, FirstName) принесет пользу этому запросу:
select * from Orders order by LastName, FirsName
Иногда у вас есть уникальный constrant для нескольких столбцов. Скажем, например, что вы перезапускаете номера заказов каждый день. Тогда OrderNumber не уникален, но (OrderNumber, OrderDayOfYear). Вы можете применить это с уникальным составным индексом.
Я уверен, что для составного индекса есть много других применений, просто перечисляя несколько примеров.
Ответ 2
Композитные индексы полезны, когда ваши запросы SELECT часто используют эти столбцы в качестве критериев в предложениях WHERE. Он улучшает скорость поиска. Вы должны избегать их, если они не нужны.
Этот article предоставляет некоторую действительно хорошую информацию.