разница между созданием индекса с двумя столбцами и созданием отдельного индекса на двух столбцах

В чем разница между созданием индекса с двумя столбцами и созданием отдельного индекса на двух столбцах?

Разница между

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) 

У вас может быть разница, если у вас есть какие-либо запросы, которые выбираются на col2 только col2 .

 SELECT (list of columns) FROM dbo.YourTable WHERE col2 = 'someValue' 

Если у вас есть два отдельных индекса, есть вероятность, что ix_index2 может использоваться для ускорения этого запроса.

Однако, если у вас есть только составной индекс (col1, col2) , то этот индекс никогда не может использоваться для этого запроса. Компонентный индекс может использоваться только тогда, если в запросе ссылаются n самых левых столбцов .

Таким образом, ваш составной индекс может быть использован

  • если ваш запрос использует как col1 и col2 в предложении WHERE
  • если ваш запрос использует только col1 в предложении WHERE

но он НИКОГДА не может использоваться, если ваш запрос использует только col2 в WHERE

Interesting Posts
Давайте будем гением компьютера.