Rozumiem, że może istnieć różnica w znaczeniu lub zamiarze między nimi, ale czy są jakieś różnice w zachowaniu lub wydajności między klastrowanym kluczem podstawowym a klastrowanym unikalnym indeksem?
17
Rozumiem, że może istnieć różnica w znaczeniu lub zamiarze między nimi, ale czy są jakieś różnice w zachowaniu lub wydajności między klastrowanym kluczem podstawowym a klastrowanym unikalnym indeksem?
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.
NOT NULL UNIQUE CLUSTERED
lub (B), aby podkreślić, że określony UQ jest „specjalny” w sensie metadanych, nawet jeśli RDMS jest agnostyczny?PRIMARY KEY
iNOT 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 zNOT NULL
naNULL
.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.
źródło