Odpowiedzi:
Jedną z głównych różnic jest to, że unikalny indeks może mieć wartość NULL, która nie jest dozwolona w kluczu podstawowym. Zgrupowane czy nie, jest to główna różnica między praktyczną implementacją klucza podstawowego a kluczem unikalnym.
Aha, i fakt, że stół może mieć jedną PK i wiele UK :-).
Są to obie różnice w INTENT, a nie w PERFORMANCE. W przeciwnym razie nie sądzę, żeby była jakaś różnica. Za dowolną PK lub Wielką Brytanią SQL Server buduje indeks (w zależności od żądania, klastrowany lub nie), a sposób jego użycia jest przezroczysty dla źródła, z którego pochodzi.
PRIMARY KEY
i NOT NULL UNIQUE
, tym pierwszym byłoby znacznie trudniej się zamienić NULL UNIQUE
(szczególnie jeśli ograniczenie było już przywoływane przez klucz obcy). Z pewnością zapobiegnie przypadkowym zmianom z NOT NULL
na NULL
.
Pomiędzy klastrowanym kluczem podstawowym a unikalnym indeksem klastrowym nie ma nic innego niż unikalny indeks klastrowany może mieć wartość NULL.
Nieunikalny indeks klastrowy ma unikalizator, z którym należy postępować w przypadku wartości nieunikalnych.
NOT NULL UNIQUE CLUSTERED
lub (B), aby podkreślić, że określony UQ jest „specjalny” w sensie metadanych, nawet jeśli RDMS jest agnostyczny?