Was ist der Unterschied zwischen der Verwendung von INDEX und KEY in MySQL?

191

Ich weiß, wie man INDEX wie im folgenden Code verwendet. Und ich weiß, wie man Fremdschlüssel und Primärschlüssel verwendet .

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), 
  ....


Ich fand jedoch einen Code mit KEY anstelle von INDEX wie folgt.

...
KEY order_date (order_date) 
...


Ich konnte auf der offiziellen MySQL-Seite keine Erklärung finden. Kann mir jemand sagen, was die Unterschiede zwischen KEY und INDEX sind?

Der einzige Unterschied, den ich sehe, ist, dass ich bei der Verwendung KEY ...das Wort wiederholen muss, z
KEY order_date (order_date).

Schienbein
quelle

Antworten:

263

Es gibt keinen Unterschied. Sie sind Synonyme.

Aus dem CREATE TABLEmanuellen Eintrag :

KEYist normalerweise ein Synonym für INDEX. Das Schlüsselattribut PRIMARY KEYkann auch so angegeben werden, wie KEYes in einer Spaltendefinition angegeben ist. Dies wurde aus Gründen der Kompatibilität mit anderen Datenbanksystemen implementiert.

nr
quelle
1
Wenn Sie sich die Tabelleninformationen in der neuesten Version von SQLYog ansehen, wird angezeigt, KEY keyname (column_name)wann ich die Tabelle mit erstellt habe INDEX keyname (column_name). Die Tatsache, dass es ein Synonym ist, erklärt es perfekt.
Crmpicco
14

Hier ist eine schöne Beschreibung über den "Unterschied":

"Bei MySQL muss jeder Schlüssel auch indiziert werden. Dies ist ein Implementierungsdetail, das für MySQL spezifisch ist, um die Leistung zu verbessern."

Stefan
quelle
2
Die Frage betrifft die Verwendung der SQL-Bezeichner KEY und INDEX in MySQL. Nicht der Unterschied zwischen einem Schlüssel und einem Index.
Josh J
Ich habe mit einer Suchmaschine nach dem Unterschied gesucht und dies war das erste Ergebnis. Meiner Meinung nach besteht keine Notwendigkeit, eine zusätzliche Frage zu eröffnen. Sie können dies aber gerne tun, wenn Sie möchten.
Stefan
3

Schlüssel sind spezielle Felder, die innerhalb einer Tabelle eine ganz bestimmte Rolle spielen, und der Schlüsseltyp bestimmt den Zweck innerhalb der Tabelle.

Ein Index ist eine Struktur, die RDBMS (Datenbankverwaltungssystem) zur Verbesserung der Datenverarbeitung bereitstellt. Ein Index hat nichts mit einer logischen Datenbankstruktur zu tun.

SO...

Schlüssel sind logische Strukturen, mit denen Sie Datensätze in einer Tabelle identifizieren, und Indizes sind physische Strukturen, mit denen Sie die Datenverarbeitung optimieren.

Quelle: Datenbankdesign für bloße Sterbliche

Verfasser: Michael Hernandez

JayD
quelle
1
Die Frage betrifft die Verwendung der SQL-Bezeichner KEY und INDEX in MySQL. Nicht der Unterschied zwischen einem Schlüssel und einem Index.
Josh J
-1

Ein Schlüssel ist eine Reihe von Spalten oder Ausdrücken, auf denen wir einen Index erstellen.

  1. Während ein Index eine Struktur ist, die in einer Datenbank gespeichert ist, sind Schlüssel ein rein logisches Konzept.

  2. Der Index hilft uns beim schnellen Zugriff auf einen Datensatz, während die Schlüssel die Datensätze nur eindeutig identifizieren.

  3. Jede Tabelle muss einen Schlüssel haben, ein Index ist jedoch nicht obligatorisch.

Überprüfen Sie unter https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

Atulya Anand
quelle
3
Die Frage betrifft die Verwendung der SQL-Bezeichner KEY und INDEX in MySQL. Nicht der Unterschied zwischen einem Schlüssel und einem Index.
Josh J
1
@Josh J Auch wenn die ursprüngliche Motivation darin bestand, nach Bezeichnern zu fragen, ergibt die Suche nach dem Unterschied zwischen einem Schlüssel und einem Index mit einer Suchmaschine dieses Thema. Es könnte sinnvoll sein, den Titel der Frage genauer zu verbessern. Andererseits würde das Schreiben einer Frage zum Unterschied zwischen einem Schlüssel und einem Index in MySQL möglicherweise als Duplikat markiert. => Ich finde solche ergänzenden Antworten sehr nützlich. Die "echte" Antwort erhält sowieso die höchste Punktzahl. Ich sehe also keinen Grund für negative Abstimmungen über ergänzende Antworten.
Stefan
Ich habe INDEX und KEY in der Frage groß geschrieben, um dies klar zu machen.
Reinierpost