Je comprends qu'il peut y avoir une différence de sens ou d' intention entre les deux, mais existe-t-il des différences de comportement ou de performances entre une clé primaire en cluster et un index unique en cluster?
17
Je comprends qu'il peut y avoir une différence de sens ou d' intention entre les deux, mais existe-t-il des différences de comportement ou de performances entre une clé primaire en cluster et un index unique en cluster?
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.
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?PRIMARY KEY
etNOT NULL UNIQUE
, le premier serait beaucoup plus difficile à transformerNULL UNIQUE
(en particulier si la contrainte était déjà référencée par une clé étrangère). Empêcherait certainement des changements accidentels deNOT 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.
la source