300 votes

Différence entre clé, clé primaire, clé unique et index dans MySQL

Quand dois-je utiliser KEY , PRIMARY KEY , UNIQUE KEY y INDEX ?

356voto

Daniel Vassallo Points 142049

KEY y INDEX sont des synonymes dans MySQL. Ils signifient la même chose. Dans les bases de données, vous utiliseriez indices pour améliorer la vitesse de récupération des données. Un index est généralement créé sur les colonnes utilisées dans JOIN , WHERE et ORDER BY clauses.

Imaginez que vous ayez une table appelée users et vous voulez rechercher tous les utilisateurs qui ont le nom de famille 'Smith'. Sans index, la base de données devrait parcourir tous les enregistrements de la table : c'est lent, car plus vous avez d'enregistrements dans votre base de données, plus il y a de travail à faire pour trouver le résultat. En revanche, un index permet à la base de données de passer rapidement aux pages pertinentes où se trouvent les enregistrements "Smith". Cela ressemble beaucoup à la façon dont nous, les humains, consultons un annuaire téléphonique pour trouver quelqu'un par son nom de famille : nous ne commençons pas à parcourir l'annuaire d'un bout à l'autre, mais nous insérons les informations dans un ordre qui nous permet de passer rapidement aux pages "S".

Les clés primaires et les clés uniques sont similaires. Une clé primaire est une colonne, ou une combinaison de colonnes, qui peut identifier de manière unique une ligne. Il s'agit d'un cas particulier de clé unique . Une table peut avoir au maximum une clé primaire, mais plus d'une clé unique. Lorsque vous spécifiez une clé unique sur une colonne, deux lignes distinctes d'une table ne peuvent pas avoir la même valeur.

Notez également que les colonnes définies comme clés primaires ou clés uniques sont automatiquement indexées dans MySQL.

68voto

Mark Byers Points 318575

KEY et INDEX sont des synonymes.

Vous devez ajouter un index lorsque les mesures de performance et EXPLAIN vous montrent que la requête est inefficace à cause d'un index manquant. L'ajout d'un index peut améliorer les performances des requêtes (mais il peut ralentir les modifications de la table).

Vous devez utiliser UNIQUE lorsque vous voulez contraindre les valeurs de cette colonne (ou de ces colonnes) à être uniques, de sorte que les tentatives d'insertion de valeurs en double entraînent une erreur.

Une PRIMARY KEY est à la fois une contrainte unique et elle implique également que la colonne est NOT NULL. Elle est utilisée pour donner une identité à chaque ligne. Cela peut être utile pour se joindre à une autre table via une contrainte de clé étrangère. Bien qu'il ne soit pas obligatoire pour une table d'avoir une CLÉ PRIMAIRE, c'est généralement une bonne idée.

60voto

Er.Gaurav singh Points 121

La clé primaire n'autorise pas la valeur nulle, mais la clé unique l'autorise.

Nous ne pouvons déclarer qu'une seule clé primaire dans une table mais une table peut avoir plusieurs clés uniques (affectation de colonnes).

23voto

Buhake Sindi Points 38654

PRIMARY KEY ET UNIQUE KEY sont similaires, sauf qu'ils ont des fonctions différentes. La clé primaire rend la ligne de la table unique (c'est-à-dire qu'il ne peut y avoir 2 lignes avec exactement la même clé). Vous ne pouvez avoir qu'une seule clé primaire dans une table de base de données.

La clé unique rend la colonne de table d'une ligne de table unique (c'est-à-dire que deux lignes de table ne peuvent pas avoir la même valeur exacte). Vous pouvez avoir plus d'une colonne de table à clé unique (contrairement à la clé primaire qui signifie que seule une colonne de la table est unique).

INDEX crée également un caractère unique. MySQL (exemple) créera une table d'indexation pour la colonne qui est indexée. De cette façon, il est plus facile de récupérer la valeur de la ligne de la table lorsque la requête est effectuée sur cette colonne de la table indexée. L'inconvénient est que si vous effectuez de nombreuses mises à jour/suppressions/créations, MySQL doit gérer les tables d'indexation (et cela peut être un goulot d'étranglement au niveau des performances).

J'espère que cela vous aidera.

10voto

Ashwini Dhekane Points 1711

Clés uniques : Les colonnes dans lesquelles il n'y a pas deux rangées similaires.

Clé primaire : Collection d'un nombre minimum de colonnes qui peuvent identifier de manière unique chaque ligne d'une table (c'est-à-dire qu'il n'y a pas deux lignes similaires dans toutes les colonnes constituant la clé primaire). Il peut y avoir plus d'une clé primaire dans une table. S'il existe une clé unique, elle est la clé primaire (et non "la" clé primaire) de la table. S'il n'existe pas de clé unique, les valeurs de plusieurs colonnes seront nécessaires pour identifier une ligne, comme (prénom, nom, nom du père, nom de la mère) qui peut constituer une clé primaire dans certaines tables.

Index : utilisé pour optimiser les requêtes. Si vous devez rechercher ou trier les résultats sur la base d'une certaine colonne plusieurs fois (par exemple, la plupart des gens recherchent les étudiants par leur nom et non par leur numéro de matricule), la recherche peut être optimisée si les valeurs de la colonne sont toutes "indexées", par exemple avec un algorithme d'arbre binaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X