Индекс отдельных столбцов и индекс комбинированных столбцов - PullRequest
1 голос
/ 01 марта 2012

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

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

select * from Docs where DocId = 200

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

1 Ответ

2 голосов
/ 01 марта 2012

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

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

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

SELECT * FROM Docs WHERE DocStatus = 1 -- Can't use the composite index.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...