2010-10-09 6 views
5

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

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

EmployeeID, DepartmentID, DesignationID, BranchID 

Здесь находятся два сценария:

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

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

В чем разница между двумя вышеуказанными? Если оба являются такими же новыми, чтобы внедрить концепцию «Covering Index»?

+0

Возможный дубликат с http://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index –

ответ

3

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

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

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

Облицованные индекс некластерный индекс с ВКЛЮЧИТЬ пункт

 Смежные вопросы

  • Нет связанных вопросов^_^