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

Я просто узнаю об индексировании на SQL-сервере, но запутался между индексом Clustered и Unique. если оба применяются к уникальному ключевому столбцу ex: PersonID. так что разница между ними.

Thanx.

Ответы

Ответ 1

Уникальный индекс - это просто индекс с уникальным ограничением, не более, не что иное. Кластеризованный индекс упорядочивает данные на диске в соответствии с индексом. Это полезно, если вы часто обращаетесь к данным в таблице через один столбец, например. через первичный ключ. Также таблица может иметь только один кластерный индекс (очевидно, конечно).

Ответ 2

Эти два не связаны:

  • "Уникальный" гарантирует, что каждое значение происходит ровно один раз только
  • "Clustered" - это то, как данные расположены на диске

Вы можете иметь все 4 перестановки:

  • "уникальный некластеризованный"
  • "уникальная кластеризация"
  • "неисторический некластеризованный"
  • "не уникальная кластеризация"

Некоторая путаница возникает, потому что по умолчанию для "первичного ключа" (PK) в SQL Server кластер.

"Первичный ключ" всегда должен быть уникальным. Разница между "уникальными" и "ПК" заключается в том, что уникальный позволяет одному NULL, PK не допускает никаких NULL.

Наконец, некоторые ограничения числа

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

Ответ 3

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

Например, телефонная книга "сгруппирована" по фамилии, но вы также можете искать по улице, поэтому у вас будет отдельный список, в котором люди, живущие на поддельной улице, находятся на страницах 3,45 и 63 и т.д.