Quelle est la différence entre l'utilisation d'INDEX et de KEY dans MySQL?

198

Je sais comment utiliser INDEX comme dans le code suivant. Et je sais comment utiliser la clé étrangère et la clé primaire .

CREATE TABLE tasks ( 
  task_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
  parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
  task VARCHAR(100) NOT NULL, 
  date_added TIMESTAMP NOT NULL, 
  date_completed TIMESTAMP, 
  PRIMARY KEY (task_id), 
  INDEX parent (parent_id), 
  ....


Cependant, j'ai trouvé un code utilisant KEY au lieu d'INDEX comme suit.

...
KEY order_date (order_date) 
...


Je n'ai trouvé aucune explication sur la page officielle MySQL. Quelqu'un pourrait-il me dire quelles sont les différences entre KEY et INDEX?

La seule différence que je vois est que lorsque j'utilise KEY ..., je dois répéter le mot, par exemple
KEY order_date (order_date).

tibia
la source

Réponses:

274

Il n'y a aucune différence. Ce sont des synonymes.

À partir de la CREATE TABLEsaisie manuelle :

KEYest normalement synonyme de INDEX. L'attribut key PRIMARY KEYpeut également être spécifié comme juste KEYlorsqu'il est donné dans une définition de colonne. Cela a été mis en œuvre pour la compatibilité avec d'autres systèmes de base de données.

nos
la source
1
Lorsque vous regardez les informations de table dans la dernière version de SQLYog, cela montre KEY keyname (column_name)quand j'ai créé la table avec INDEX keyname (column_name). Le fait que ce soit un synonyme l'explique parfaitement.
crmpicco
"L'attribut clé PRIMARY KEYpeut également être spécifié comme juste KEYlorsqu'il est donné dans une définition de colonne." Qu'est-ce que ça veut dire?
Zyl
12

Voici une belle description de la "différence":

"MySQL exige que chaque clé soit également indexée, c'est un détail d'implémentation spécifique à MySQL pour améliorer les performances."

Stefan
la source
2
La question concerne l'utilisation des identificateurs SQL KEY et INDEX dans MySQL. Pas la différence entre une clé et un index.
Josh J
J'ai cherché la différence avec un moteur de recherche et c'était le premier résultat. À mon avis, il n'est pas nécessaire d'ouvrir une question supplémentaire. Mais n'hésitez pas à le faire si vous le souhaitez.
Stefan
4

Les clés sont des champs spéciaux qui jouent des rôles très spécifiques dans une table et le type de clé détermine son objectif dans la table.

Un index est une structure que le SGBDR (système de gestion de base de données) fournit pour améliorer le traitement des données. Un index n'a rien à voir avec une structure de base de données logique.

DONC...

Les clés sont des structures logiques que vous utilisez pour identifier les enregistrements dans une table et les index sont des structures physiques que vous utilisez pour optimiser le traitement des données.

Source: Conception de base de données pour les simples mortels

Auteur: Michael Hernandez

JayD
la source
2
La question concerne l'utilisation des identifiants SQL KEY et INDEX dans MySQL. Pas la différence entre une clé et un index.
Josh J
-1

Une clé est un ensemble de colonnes ou d'expressions sur lesquelles nous construisons un index.

  1. Alors qu'un index est une structure stockée dans une base de données, les clés sont strictement un concept logique.

  2. L'index nous aide à accéder rapidement à un enregistrement, tandis que les clés identifient simplement les enregistrements de manière unique.

  3. Chaque table aura nécessairement une clé, mais avoir un index n'est pas obligatoire.

Vérifiez sur https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

Atulya Anand
la source
3
La question concerne l'utilisation des identifiants SQL KEY et INDEX dans MySQL. Pas la différence entre une clé et un index.
Josh J
1
@Josh J Même si la motivation initiale était de poser des questions sur les identifiants, la recherche de la différence entre une clé et un index avec un moteur de recherche donne ce sujet. Il pourrait être judicieux d'améliorer le titre de la question pour qu'il soit plus précis. D'un autre côté, écrire une question sur la différence entre une clé et un index dans mysql serait éventuellement marqué comme un doublon. => Je trouve ces réponses complémentaires très utiles. La "vraie" réponse obtiendra de toute façon le score le plus élevé. Je ne vois donc pas de raison à des votes négatifs sur les réponses complémentaires.
Stefan
J'ai mis INDEX et KEY en majuscule dans la question pour que cela soit clair.
reinierpost