Réponses:
Une différence principale est que l'index unique peut avoir une valeur NULL qui n'est pas autorisée dans la clé primaire. Clustered ou non, c'est la principale différence entre l'implémentation pratique d'une clé primaire par rapport à une clé unique.
Oh, et le fait qu'une table peut avoir un PK et plusieurs UK :-).
Ce sont deux différences d'intention et non de PERFORMANCE. Sinon, je ne pense pas qu'il y ait de différence. Derrière tout PK ou UK, SQL Server construit un index (en fonction de la demande, en cluster ou non) et la façon dont il est utilisé est transparente pour la source.
PRIMARY KEY
et NOT NULL UNIQUE
, le premier serait beaucoup plus difficile à transformer NULL UNIQUE
(en particulier si la contrainte était déjà référencée par une clé étrangère). Empêcherait certainement des changements accidentels de NOT NULL
à NULL
.
Entre une clé primaire en cluster et un index cluster unique, il n'y a pas de différence autre que l'index cluster unique peut avoir une valeur NULL.
Un index cluster non unique possède un uniqueificateur qui doit être traité pour les valeurs non uniques.
NOT NULL UNIQUE CLUSTERED
ou (B) pour souligner qu'un UQ particulier est "spécial" au sens des métadonnées, même si le RDMS est agnostique?