Я понимаю, что между этими двумя понятиями могут быть различия в значении или намерениях , но существуют ли различия в поведении или производительности между кластерным первичным ключом и кластерным уникальным индексом?
17
Я понимаю, что между этими двумя понятиями могут быть различия в значении или намерениях , но существуют ли различия в поведении или производительности между кластерным первичным ключом и кластерным уникальным индексом?
Основное отличие состоит в том, что уникальный индекс может иметь значение NULL, которое не допускается в первичном ключе. Кластеризовано или нет, это главное отличие между практической реализацией первичного ключа и уникального ключа.
Да, и тот факт, что таблица может иметь один ПК и много Великобритании :-).
Это оба различия в НАМЕРЕНИИ, а не в РАБОТЕ. В противном случае, я не думаю, что есть какая-либо разница. За любым PK или UK SQL Server строит индекс (в зависимости от запроса, кластеризованный или нет), и способ его использования прозрачен для источника.
NOT NULL UNIQUE CLUSTERED
или (B), чтобы подчеркнуть, что конкретный UQ является «особенным» в смысле метаданных, даже если RDMS является агностиком?PRIMARY KEY
иNOT NULL UNIQUE
первым будет гораздо труднее превратитьсяNULL UNIQUE
(особенно если на ограничение уже ссылался внешний ключ). Конечно, предотвратит случайные изменения отNOT NULL
доNULL
.Между кластеризованным первичным ключом и уникальным кластеризованным индексом нет ничего другого, кроме того, что уникальный кластеризованный индекс может иметь значение NULL.
Неуникальный кластеризованный индекс имеет уникальный идентификатор, с которым необходимо работать для неуникальных значений.
источник