Question

Une contrainte unique est-elle un index par défaut? Sinon, une contrainte unique a-t-elle les mêmes résultats en termes de performances qu'une colonne indexée lorsqu'elle est utilisée dans la clause SELECT ... WHERE ?

Merci

Était-ce utile?

La solution

Une contrainte unique est nécessairement un index. Vous le définissez normalement comme "UNIQUE INDEX". Dans tous les cas, un index serait nécessaire pour mettre en œuvre efficacement une contrainte unique. En avoir un ne présente donc aucun inconvénient.

Autres conseils

Une contrainte est en réalité très différente d'un index: elle indique simplement que MySQL est censé vous imposer une spécificité. Cependant, un index (bien qu’il puisse être unique) concerne l’ordre physique sur votre disque dur ou des structures supplémentaires (généralement un arbre) permettant une recherche efficace dans la colonne.

Vous pouvez toutefois confondre tout cela avec les clés primaires qui définissent un index unique (généralement en cluster).

Une contrainte unique est un moyen d'exprimer le fait que quelque chose (comme une combinaison de valeurs d'attribut) doit être unique dans le cadre d'une relation entière ("table")).

Cela se situe au niveau de la conception logique.

Un index est un moyen éventuellement utile d'aider à appliquer une telle contrainte.

C’est au niveau de la conception physique.

Certains produits de SGBD peuvent déduire certaines constructions de conception physique, telles que la présence de certains index, de la présence de certaines constructions de conception logique, telles qu'une contrainte UNIQUE. D'autres pourraient ne pas.

UNIQUE est en fait une contrainte sur un index, donc oui, UNIQUE implique qu’il existe un index sur le champ sur lequel vous imposez l’unicité.

Vérifiez la contrainte de clé primaire avant de commencer à utiliser des contraintes uniques.

Une contrainte de clé primaire revient à déclarer une contrainte unique et une contrainte non nulle. S'il y a plus d'une colonne dans la clé primaire, chaque colonne reçoit une contrainte non nulle, mais la contrainte unique s'applique à toutes les colonnes prises ensemble.

Lorsque vous déclarez une clé primaire, le SGBD crée un index pour vous. Vous pouvez supprimer l’index si vous le souhaitez, mais vous obtiendrez des performances épouvantables lorsque le SGBD effectue des analyses de table pour vérifier l’unicité.

Les contraintes de clé primaire imposent l'intégrité de l'entité, tandis que les contraintes REFERENCES (clé étrangère) imposent l'intégrité référentielle. Ensemble, ils contribuent grandement à assurer l’intégrité des données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top