Зачем вам кластерный составной индекс, если ни одно из полей не используется вместе? - PullRequest
1 голос
/ 26 мая 2009

В устаревшей базе данных (SQL Server 2000) у нас есть кластерный индекс, который выглядит следующим образом:

CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr] 
(
    [uid] ASC,
    [ssn] ASC,
    [lname] ASC
)

Дело в том, что, насколько я знаю, ни одно из этих полей не используется вместе в предложении WHERE. Нет никакой причины использовать их вместе. Есть ли причина иметь такой кластерный индекс?

1 Ответ

1 голос
/ 26 мая 2009

Одна из причин, по которой я мог бы подумать, заключается в том, что если вы используете только эти поля во многих операторах select (не обязательно в предложении where), это может послужить индексом покрытия.

Например, если у вас много запросов, подобных этому:

SELECT uid, ssn, lname FROM usr WHER uid = x

Запрос фактически никогда не должен попадать в таблицу, поскольку все обязательные поля в индексе.

...