В чем разница между составным некластеризованным индексом и индексом покрытия - PullRequest
5 голосов
/ 09 октября 2010

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

Например, у меня есть следующие столбцы:

EmployeeID, DepartmentID, DesignationID, BranchID

Вот два сценария:

  • EmployeeID является первичным ключом с кластерный индекс и оставшиеся столбцы (DepartmentID, DesignationID, BranchID) принимаются как не кластеризованные индекс (составной индекс).

  • EmployeeID является первичным ключом с Кластерный индекс и DepartmentID некластерный индекс с DesignationID, BranchID включены столбцы "для некластеризованного индекса.

Какая разница между двумя выше? Если оба одинаковы, что нового для введения концепции «Индекс покрытия»?

Ответы [ 2 ]

3 голосов
/ 09 октября 2010

Разница в том, что если в первом индексе есть две строки с одинаковым DepartmentID, они будут отсортированы по значениям DesignationID и BranchID. Во втором случае они не будут отсортированы относительно друг друга и могут появляться в индексе в любом порядке.

Что это означает для вашего приложения:

  • Запрос, который может использовать индекс для (DepartmentID, DesignationID), может быть более эффективным с первым запросом, чем вторым.
  • Построение первого индекса может занять немного больше времени из-за необходимости дополнительной сортировки.
0 голосов
/ 01 марта 2018

Покрываемый индекс - это некластеризованный индекс с предложением INCLUDE

...