2009-06-01 2 views

ответ

8

Запрос, который выбирает только несколько полей, может полностью работать с индексом. Например, если у вас есть индекс (OrderId) этот запрос будет требовать просмотра таблицы:

select Status from Orders where OrderId = 42 

Но если добавить составной индекс на (OrderId, Status) двигатель может получить всю необходимую информацию из индекс.

Сортировка по нескольким столбцам может быть полезной из составного индекса. Например, индекс (LastName, FirstName) выиграл бы этот запрос:

select * from Orders order by LastName, FirsName 

Иногда у вас есть уникальный constrant на нескольких колонках. Скажем, например, что вы перезапускаете номера заказов каждый день. Тогда OrderNumber не уникален, но (OrderNumber, OrderDayOfYear). Вы можете применять это с уникальным составным индексом.

Я уверен, что существует много других применений для составного индекса, просто перечисляя несколько примеров.

+0

где OrderId = 42 => нет необходимости в композитном, только OrderId. Morevoer составной (Id, OrderId) не поможет, его можно использовать только для запроса с использованием Id или Id и OrderId. Я не эксперт по БД, но я не уверен, что составной индекс (если он не кластеризован) действительно полезен для выбора * –

+0

@Guillaume: означает индекс в (OrderId, Status), отредактированный в ответе. – Andomar

14

Композитные индексы полезны, когда ваши запросы SELECT часто используют эти столбцы в качестве критериев в предложениях WHERE. Он улучшает скорость поиска. Вы должны избегать их, если они не нужны.

Этот article содержит некоторые действительно хорошие сведения.

+1

+1 для статьи –

+0

+1 для хорошей справки. Есть ли аналогичная статья для Oracle? – hsalimi

Смежные вопросы