Répondre

23

La pièce unique n'est pas là où se trouve la différence. L'index et la clé ne sont pas la même chose, et ne sont pas comparables.

Une clé est une colonne de données, ou plusieurs colonnes, qui sont forcées d'être uniques avec une contrainte, soit une clé primaire, soit une contrainte unique explicitement refusée. Alors qu'un index sont des structures pour stocker l'emplacement des données pour une récupération plus rapide.

De la documentation:

Unique Index

crée un index unique sur une table ou vue. Un index unique est un index dans lequel aucune ligne ne peut avoir la même valeur de clé d'index . Un indice cluster sur une vue doit être unique

Unique key (Constraint)

Vous pouvez utiliser UNIQUE pour faire sûr qu'aucune valeur en double sont entrées dans les colonnes spécifiques qui ne participent pas au primaire clé. Bien à la fois une contrainte UNIQUE et une contrainte de clé primaire renforcer l'unicité , utilisez une contrainte UNIQUE au lieu d'une contrainte de clé primaire lorsque vous souhaitez appliquer l'unicité d'une colonne, ou une combinaison de colonnes, ce n'est pas clé primaire .

19

Cette MSDN article comparing the two is what you're after. La terminologie est telle que "contrainte" est ANSI, mais dans SQL Server vous ne pouvez pas désactiver une contrainte unique ...

Dans la plupart des cas, il n'y a pas de différence - la contrainte est implémentée sous la forme d'un index sous les couvertures. L'article MSDN étaye cette - la différence est dans les méta-données, pour des choses comme:

  • peaufinage FILLFACTOR
  • INCLUDE fournit
  • index de couverture plus efficaces (contrainte composite) Un index filtré est comme une contrainte sur un sous-ensemble de lignes/ignorer plusieurs nulles, etc.
+1

"la contrainte est mis en œuvre comme un indice sous les couvertures" - tout à fait raison, et il serait impossible d'appliquer efficacement sans index dans tous les cas. – DaveBoltman

2

"Clé unique" est une tautologie. Une clé (AKA "Candidate Key") est une caractéristique logique de la base de données - une contrainte qui impose l'unicité d'un ensemble d'attributs dans une table.

Un index est une fonctionnalité de niveau physique destinée à optimiser les performances d'une manière ou d'une autre. Il existe plusieurs types d'index.

-1

Clé unique: Il s'agit d'une contrainte qui impose une limitation à la base de données. Cette limitation est qu'il ne permettra pas les valeurs en double. Par exemple, si vous voulez sélectionner une colonne comme clé primaire, elle ne doit pas être NULL & UNIQUE.

Indice unique: Il s'agit d'un index qui améliore les performances lors de l'exécution de requêtes sur votre base de données. Dans un index unique, il n'autorise pas non plus les doublons dans l'index. c'est-à-dire que deux rangées n'auront pas la même valeur de clé d'index.

0

La clé (mot-clé alias) et l'index sont des identificateurs d'une ligne de table.
Bien que l'index soit une structure d'identification parallèle, contenant un pointeur vers la ligne identifiée, alors que les clés sont des éléments de champ in situ.

La clé, en tant qu'identifiant, implique l'unicité (contrainte) et NOT NULL (contrainte). Il n'y a aucun sens dans NULL comme identificateur (comme null ne peut rien identifier) ​​ainsi que la valeur d'identification non unique.
index non cluster peut contenir des données réelles, et non servir comme identifiant aux données réelles, et ainsi être non unique [1]

Il est pratique regrettable que la clé ou l'index (identifiant) est appelé par la contrainte (règle ou restriction) ce que la plupart des réponses précédentes ont suivi.

Les clés sont utilisés dans le contexte de:

  • alternative clés alias candidats secondaire alias, peuvent être multiples
  • clé composite (quelques champs combinés)
  • clé primaire (SUPERTOUCHE), naturel ou de substitution clé, une seule, vraiment utilisé pour l'intégrité référentielle
  • clé étrangère
  • clé étrangère

est la clé dans un autre table (où c'est la clé primaire) et même pas une clé à laquelle ils se réfèrent fréquemment. Une telle utilisation est expliquée par le raccourcissement confus du terme "contrainte de clé étrangère" en une "clé étrangère". La contrainte de clé primaire implique réellement des contraintes NOT NULL et UNIQUE + cette colonne référencée (ou colonnes combinées) est un identifiant et aussi malheureusement substituée par "clé primaire" ou "contrainte de clé primaire" alors que les deux ne peuvent pas être appelées par seule contrainte (clé primaire) ou par clé (primaire) seulement.


Mise à jour:
Ma question connexe:
[1]
UNIQUE argument for INDEX creation - what's for?

Questions connexes