Risposte:
Una differenza principale è che l'indice univoco può avere un valore NULL non consentito nella chiave primaria. Clustered o no, questa è la differenza principale tra l'implementazione pratica di una chiave primaria rispetto a una chiave univoca.
Oh, e il fatto che un tavolo possa avere un PK e molti UK :-).
Queste sono entrambe differenze in INTENT e non in PERFORMANCE. Altrimenti, non credo ci sia alcuna differenza. Dietro qualsiasi PK o UK, SQL Server crea un indice (a seconda della richiesta, raggruppato o meno) e il modo in cui viene utilizzato è trasparente per l'origine.
PRIMARY KEY
e NOT NULL UNIQUE
, il primo sarebbe molto più difficile da trasformare NULL UNIQUE
( in particolare se il vincolo era già indicato da una chiave esterna). Certamente impedirebbe modifiche accidentali NOT NULL
a NULL
.
Tra una chiave primaria in cluster e un indice cluster univoco non esiste altro che l'indice cluster univoco possa avere un valore NULL.
Un indice cluster non univoco ha un identificatore univoco che deve essere trattato per valori non univoci.
NOT NULL UNIQUE CLUSTERED
o (B) per evidenziare che un determinato UQ è "speciale" in un senso di metadati, anche se RDMS è agnostico?