Разница между созданием индекса с двумя столбцами и созданием отдельного индекса на двух столбцах
В чем разница между созданием индекса с двумя столбцами и созданием отдельного индекса по двум столбцам?
Разница между
create nonclustered index ix_index1 on table1(col1)
create nonclustered index ix_index2 on table1(col2)
а также
create nonclustered index ix_index1 on table1(col1, col2)
1 ответ
Вы можете почувствовать разницу, если у вас есть какие-либо запросы, которые выбираются на основе col2
в одиночестве.
SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'
Если у вас есть два отдельных индекса, то есть вероятность, что ix_index2
может быть использован для ускорения этого запроса.
Однако, если у вас есть только составной индекс на (col1, col2)
тогда этот индекс никогда не может быть использован для этого запроса. Составной индекс можно использовать только в том случае, если в запросе указываются n крайних левых столбцов.
Таким образом, ваш составной индекс может быть использован
- если ваш запрос использует оба
col1
а такжеcol2
вWHERE
пункт - если ваш запрос использует только
col1
вWHERE
пункт
но он НИКОГДА не может быть использован, если ваш запрос использует только col2
в WHERE
пункт