[Sql-server] Множественные индексы и индексы с несколькими колонками


Answers

Да. Я рекомендую вам ознакомиться с статьями Кимберли Триппа по индексированию .

Если индекс «покрывает», то нет необходимости использовать ничего, кроме индекса. В SQL Server 2005 вы также можете добавить дополнительные столбцы в индекс, который не является частью ключа, который может исключить поездки в остальную часть строки.

Имея несколько индексов, каждый из одного столбца может означать, что используется только один индекс - вам нужно будет обратиться к плану выполнения, чтобы узнать, какие эффекты предлагают различные схемы индексирования.

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

Question

Я только что добавлял индекс в таблицу в SQL Server 2005, и это заставило меня задуматься. В чем разница между созданием 1 индекса и определением нескольких столбцов с 1 индексом на столбец, который вы хотите индексировать.

Существуют ли определенные причины, по которым нужно использовать друг друга?

Например

Create NonClustered Index IX_IndexName On TableName
(Column1 Asc, Column2 Asc, Column3 Asc)

Против

Create NonClustered Index IX_IndexName1 On TableName
(Column1 Asc)

Create NonClustered Index IX_IndexName2 On TableName
(Column2 Asc)

Create NonClustered Index IX_IndexName3 On TableName
(Column3 Asc)



Один предмет, который, кажется, был пропущен, - это звездообразные преобразования. Операторы индексирования Intersection разрешают предикат, вычисляя набор строк, ударяемых каждым из предикатов, прежде чем любые операции ввода-вывода будут выполнены в таблице фактов. На схеме звезды вы будете индексировать каждую отдельную клавишу измерения, а оптимизатор запросов может разрешить, какие строки выбрать по вычислению перекрестка индекса. Индексы на отдельных столбцах дают максимальную гибкость для этого.