Antworten:
Ein Hauptunterschied besteht darin, dass der eindeutige Index einen NULL-Wert haben kann, der im Primärschlüssel nicht zulässig ist. Geclustert oder nicht, dies ist der Hauptunterschied zwischen der praktischen Implementierung eines Primärschlüssels und einem eindeutigen Schlüssel.
Oh, und die Tatsache, dass ein Tisch eine PK und viele UK haben kann :-).
Dies sind beide Unterschiede in der Absicht, nicht in der Leistung. Ansonsten glaube ich nicht, dass es einen Unterschied gibt. Hinter jedem PK oder UK erstellt der SQL Server einen Index (abhängig von der Anforderung, gruppiert oder nicht) und die Art und Weise, wie er verwendet wird, ist für die Quelle, von der er stammt, transparent.
PRIMARY KEY
und NOT NULL UNIQUE
wäre das erstere viel schwieriger zu verwandeln NULL UNIQUE
(insbesondere wenn die Einschränkung bereits von einem Fremdschlüssel referenziert wurde). Würde sicherlich versehentliche Änderungen von NOT NULL
bis verhindern NULL
.
Zwischen einem gruppierten Primärschlüssel und einem eindeutigen gruppierten Index gibt es keine Unterschiede, außer dass der eindeutige gruppierte Index einen NULL-Wert haben kann.
Ein nicht eindeutiger Clustered-Index verfügt über einen Uniqueifier, der für nicht eindeutige Werte behandelt werden muss.
NOT NULL UNIQUE CLUSTERED
oder (B), um hervorzuheben, dass eine bestimmte UQ in einem Metadaten-Sinne "speziell" ist, obwohl das RDMS agnostisch ist.