Подтвердить что ты не робот

Кластерный индекс на двух столбцах

У меня есть таблица many-to-many, скажем:

PersonJob(personId,jobId)

с кластеризованным индексом (personId, jobId).

Возникает вопрос:

Если где-то в SQL я сделаю запрос вроде:

SELECT *
FROM PersonJob JOIN Job ON PersonJob.jobId = Job.jobId
.......

будет ли он использовать этот кластерный индекс для поиска записей с определенным значением jobId в таблице PersonJob? Или мне лучше создать новый некластерный неуникальный индекс в столбце jobId в таблице PersonJob?

Спасибо Pawel

4b9b3361

Ответ 1

У вас не будет преимуществ от кластерного индекса, и ваш запрос все равно должен будет сканировать все строки таблицы PersonJob.

Если столбцы были отменены в вашем кластерном индексе (jobID, personId), вы воспользуетесь этим индексом. Учтите, что кластеризованный индекс сортирует фактические строки в таблице по значениям столбцов, которые формируют индекс. Таким образом, с кластеризованным индексом (personId, jobID) у вас есть все строки с одним и тем же personId "сгруппированы" вместе (в порядке идентификатора jobID), но строки с одинаковым идентификатором jobID все еще разбросаны по всей таблице.