В чем разница между кластерным индексом и уникальным индексом? - PullRequest
14 голосов
/ 10 июня 2011

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

Спасибо.

Ответы [ 4 ]

36 голосов
/ 10 июня 2011

Два не связаны:

  • «Уникальный» гарантирует, что каждое значение встречается точно только один раз
  • «Кластеризация» - это расположение данных на диске

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

  • «уникальный некластеризованный»
  • «уникальный кластер»
  • «неуникальные некластеризованные»
  • "неуникальный кластер"

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

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

Наконец, некоторые ограничения по номеру

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

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

9 голосов
/ 10 июня 2011

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

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

1 голос
/ 10 июня 2011

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

Дополнительно: http://decipherinfosys.wordpress.com/2007/07/04/back-to-the-basics-difference-between-primary-key-and-unique-index/

...