Quelle est la différence entre un index unique et une clé unique?Index unique ou clé unique?
Répondre
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:
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
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 .
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.
"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.
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.
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?
- 1. Index par rapport à clé unique dans SQL Server 2008
- 2. La clé unique Sql Server est-elle également un index?
- 3. Contrainte - unique ou vide
- 4. Quelle est la différence entre UNIQUE INDEX et UNIQUE KEY?
- 5. Conception de MySQL Unique Index
- 6. Clé unique dans MySql
- 7. Modèle de données d'entité, index unique
- 8. Dois-je créer un index cluster unique ou un index cluster non unique sur cette table SQL 2005?
- 9. RowGuide et la clé UNIQUE
- 10. sécurité PHP: « Nonce » ou problème « clé de forme unique »
- 11. Erreur d'index unique lors de la création d'un index non unique - SQL Server
- 12. index unique multi-champs de datamapper
- 13. Enregistrement clone SQL avec un index unique
- 14. rails Routage routage - index unique avec emboîtement
- 15. $ ('*'). Index (currentElement) donnera un nombre unique?
- 16. Réseau unique - sorties multiples, ou plusieurs réseaux - sortie unique?
- 17. Postgresql duplicate clé viole contrainte unique
- 18. Requête unique ou requêtes multiples
- 19. MySQL - Manière correcte d'utiliser la clé UNIQUE?
- 20. entity-framework une table sans clé unique
- 21. gérer une clé unique pour le cache?
- 22. Comment créer un index sur une table non unique?
- 23. Retirer la clé du tableau associatif avec une clé unique
- 24. Index unique de SQL Server permettant les doublons
- 25. Solr: QueryElevationComponent requiert l'erreur unique StrField unique
- 26. LINQ: Impossible d'insérer la ligne clé dans l'objet « dbo.tblOutstandingCompletions » avec index unique
- 27. Nhibernate fluide mappant plusieurs classes à une clé étrangère unique
- 28. erreur NHibernate (Impossible d'insérer clé en double avec l'index unique)
- 29. SQL Server: non-null unique vs clé primaire
- 30. Remplacement des valeurs de clé étrangère (unique) dans deux enregistrements
"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