Составные индексы базы данных

Я ищу подтверждение моего понимания составных индексов в базах данных - особенно в отношении SQL Server 2008 R2, если это имеет значение.

Я думаю, что понимаю, что порядок столбцов индекса имеет решающее значение в том смысле, что если у меня есть индекс { [Name], [Date] }, то SELECT, основанный на предложении WHERE, основанном на [Date], не сможет использовать индекс, но индекс { [Date], [Name] } будет. Если SELECT основан на обоих столбцах, можно использовать любой индекс.

Это правильно? Каковы преимущества использования такого составного индекса вместо двух индексов в каждом столбце (т.е. { [Date] } и { [Name] }).

Спасибо!


person Barguast    schedule 12.01.2011    source источник


Ответы (2)


Не совсем, выбор по дате все еще может использовать индекс, но не так эффективно, как запрос, включающий имя в качестве имени, ограничит объем поиска в индексе.

Если у вас часто есть запросы по имени + дате и дате и имени отдельно, используйте 3 индекса по одному для каждой комбинации.

Кроме того, наличие самого разнообразного поля первым в индексе также быстрее ограничивает поиск индекса, делая его быстрее.

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

person David Mårtensson    schedule 12.01.2011

Это верно.

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

Если вы добавляете столбцы «INCLUDED» в индекс (составной или несоставной), вы можете создать «покрывающий» индекс для охвата запроса (или запросов), что желательно, поскольку устраняет необходимость выполнять второй поиск для получения эти столбцы (из кластеризованного индекса).

Выбор двух индексов отдельных столбцов ИЛИ составного индекса объединенных столбцов определяется общей рабочей нагрузкой запросов к этой таблице.

person Mitch Wheat    schedule 12.01.2011
comment
Хорошо знать! Спасибо за ответ. - person Barguast; 12.01.2011