В чем разница между кластеризованным индексом и уникальным индексом?
Я просто узнаю об индексировании на SQL-сервере, но запутался между индексом Clustered и Unique. если оба применяются к уникальному ключевому столбцу ex: PersonID. так что разница между ними.
Thanx.
Ответы
Ответ 1
Уникальный индекс - это просто индекс с уникальным ограничением, не более, не что иное. Кластеризованный индекс упорядочивает данные на диске в соответствии с индексом. Это полезно, если вы часто обращаетесь к данным в таблице через один столбец, например. через первичный ключ. Также таблица может иметь только один кластерный индекс (очевидно, конечно).
Ответ 2
Эти два не связаны:
- "Уникальный" гарантирует, что каждое значение происходит ровно один раз только
- "Clustered" - это то, как данные расположены на диске
Вы можете иметь все 4 перестановки:
- "уникальный некластеризованный"
- "уникальная кластеризация"
- "неисторический некластеризованный"
- "не уникальная кластеризация"
Некоторая путаница возникает, потому что по умолчанию для "первичного ключа" (PK) в SQL Server кластер.
"Первичный ключ" всегда должен быть уникальным. Разница между "уникальными" и "ПК" заключается в том, что уникальный позволяет одному NULL, PK не допускает никаких NULL.
Наконец, некоторые ограничения числа
- поскольку кластеризация относится к макету на диске, вы можете иметь только один кластерный индекс для таблицы
- у таблицы не может быть более одного пинакового ключа, но может иметь множество уникальных индексов
Ответ 3
Один грубый способ думать об этом - подумать о телефонной книге. Кластеризованный индекс - это порядок, в котором написаны страницы. Любые другие индексы представляют собой отдельные списки, показывающие, на какую страницу идти.
Например, телефонная книга "сгруппирована" по фамилии, но вы также можете искать по улице, поэтому у вас будет отдельный список, в котором люди, живущие на поддельной улице, находятся на страницах 3,45 и 63 и т.д.
Ответ 4
В AFAIK каждая таблица может иметь только один кластерный индекс, который обычно является основным ключом, но может иметь любые уникальные индексы.
Подробнее: http://decipherinfosys.wordpress.com/2007/07/04/back-to-the-basics-difference-between-primary-key-and-unique-index/