226 votes

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

Je sais comment utiliser l'INDEX comme dans le code suivant. Et je sais comment utiliser clé étrangère y 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 de INDEX comme suit.

...
KEY order_date (order_date) 
...

Je n'ai pas trouvé d'explication sur la page officielle de MySQL. Quelqu'un pourrait-il me dire quelle est la différence 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 ex.
KEY order_date (order_date) .

314voto

nos Points 102226

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

Desde le site CREATE TABLE entrée manuelle :

KEY est normalement un synonyme de INDEX . L'attribut clé PRIMARY KEY peut peut également être spécifié en tant que simple KEY lorsqu'elle est donnée dans une définition de colonne. Ceci a été pour des raisons de compatibilité avec d'autres systèmes de bases de données.

1 votes

En regardant les informations sur les tables dans la dernière version de SQLYog, on peut voir que KEY keyname (column_name) lorsque j'ai créé la table avec INDEX keyname (column_name) . Le fait qu'il s'agisse d'un synonyme l'explique parfaitement.

2 votes

"L'attribut clé PRIMARY KEY peut également être spécifié comme juste KEY lorsqu'elle est donnée dans une définition de colonne." Qu'est-ce que cela signifie ?

14voto

Stefan Points 3

Voici un belle description sur la "différence" :

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

3 votes

La question porte sur l'utilisation des identifiants SQL KEY et INDEX dans MySQL. Pas la différence entre une clé et un index.

1 votes

J'ai cherché la différence avec un moteur de recherche et ceci é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.

6voto

JayD Points 824

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 SGBD (système de gestion des bases de données) fournit pour améliorer le traitement des données. Un index n'a rien à voir avec une structure logique de base de données.

ALORS...

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 bases de données pour les simples mortels

Auteur : Michael Hernandez

5 votes

La question porte sur l'utilisation des identifiants SQL KEY et INDEX dans MySQL. Pas la différence entre une clé et un index.

6voto

fineliner Points 11

Il est mentionné comme un synonyme de INDEX dans la documentation sur la création de tableaux : Manuel de référence MySQL 5.5 : : 13 Syntaxe des instructions SQL : : 13.1 Instructions de définition de données : : 13.1.17 Syntaxe CREATE TABLE

@Nos a déjà cité la section et lié l'aide pour 5.1.

Comme PRIMARY KEY crée une clé primaire et un index pour vous, KEY crée uniquement un index.

-1voto

Atulya Anand Points 33

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

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

  2. Les index nous aident à 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 il n'est pas obligatoire d'avoir un index.

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

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