2012-03-01 5 views
1

У меня есть таблица под названием «Документы», первичным ключом которой является комбинация следующих столбцов: DocId ,, DocStatus, DocSubId.Индивидуальный индекс столбцов против индекса комбинированных столбцов

Теперь, когда я запускаю следующий запрос:

select * from Docs where DocId = 200 

тогда он будет в конечном итоге, используя кластерный индекс первичного ключа Или было бы быстрее создать отдельный индекс DocId для оптимизации выше запроса.

ответ

2

Существующий кластерный индекс будет использоваться, нет необходимости в отдельном индексе. В составном индексе любой запрос в крайнем левом столбце (столбцах) может использовать индекс. Таким образом, ваш индекс также действителен для запроса как:

SELECT * FROM Docs WHERE DocId = 200 AND DocStatus = 1 

С другой стороны, композитный индекс не будет действительным для запроса на только DocStatus, как крайний левый столбец не используется.

SELECT * FROM Docs WHERE DocStatus = 1 -- Can't use the composite index. 
Смежные вопросы