Wann sollte ich KEY
, PRIMARY KEY
, UNIQUE KEY
und INDEX
?
KEY
und INDEX
sind Synonyme in MySQL. Sie meinen das Gleiche. In Datenbanken würden Sie Indizes verwenden, um die Geschwindigkeit des Datenabrufs zu verbessern. Ein Index wird normalerweise für Spalten erstellt, die in den Klauseln JOIN
, WHERE
und ORDER BY
Verwendet werden.
Stellen Sie sich vor, Sie haben eine Tabelle mit dem Namen users
und möchten nach allen Benutzern suchen, die den Nachnamen 'Smith' haben. Ohne einen Index müsste die Datenbank alle Datensätze der Tabelle durchgehen. Dies ist langsam, da je mehr Datensätze Sie in Ihrer Datenbank haben, desto mehr Arbeit ist erforderlich, um das Ergebnis zu finden. Auf der anderen Seite hilft ein Index der Datenbank, schnell zu den relevanten Seiten zu springen, auf denen die "Smith" -Datensätze gespeichert sind. Dies ist sehr ähnlich zu der Vorgehensweise, mit der wir Menschen ein Telefonbuchverzeichnis durchsuchen, um jemanden mit dem Nachnamen zu finden: Wir beginnen nicht, das Verzeichnis von Anfang bis Ende zu durchsuchen, solange wir die Informationen in einer Reihenfolge einfügen, die wir können Mit können Sie schnell zu den S-Seiten springen.
Primärschlüssel und eindeutige Schlüssel sind ähnlich. Ein Primärschlüssel ist eine Spalte oder eine Kombination von Spalten, mit denen eine Zeile eindeutig identifiziert werden kann. Es ist ein Sonderfall von eindeutiger Schlüssel . Eine Tabelle kann höchstens einen Primärschlüssel, aber mehr als einen eindeutigen Schlüssel haben. Wenn Sie einen eindeutigen Schlüssel für eine Spalte angeben, dürfen keine zwei unterschiedlichen Zeilen in einer Tabelle denselben Wert haben.
Beachten Sie auch, dass Spalten, die als Primärschlüssel oder eindeutige Schlüssel definiert sind, in MySQL automatisch indiziert werden.
KEY und INDEX sind Synonyme.
Sie sollten einen Index hinzufügen, wenn Leistungsmessungen und EXPLAIN anzeigen, dass die Abfrage aufgrund eines fehlenden Index ineffizient ist. Das Hinzufügen eines Index kann die Leistung von Abfragen verbessern (Änderungen an der Tabelle können jedoch verlangsamt werden).
Sie sollten UNIQUE verwenden, wenn Sie möchten, dass die Werte in dieser Spalte (oder diesen Spalten) eindeutig sind, damit der Versuch, doppelte Werte einzufügen, zu einem Fehler führt.
Ein PRIMARY KEY ist sowohl eine eindeutige Einschränkung als auch impliziert, dass die Spalte NICHT NULL ist. Es wird verwendet, um jeder Zeile eine Identität zu geben. Dies kann nützlich sein, um eine Verknüpfung mit einer anderen Tabelle über eine Fremdschlüsseleinschränkung herzustellen. Es ist zwar nicht erforderlich, dass eine Tabelle einen PRIMARY KEY hat, aber normalerweise ist dies eine gute Idee.
Primärschlüssel erlaubt keine NULL
Werte, aber eindeutige Schlüssel erlaubt NULL
Werte.
Wir können nur einen Primärschlüssel in einer Tabelle deklarieren, aber eine Tabelle kann mehrere eindeutige Schlüssel (Spaltenzuweisung).
PRIMARY KEY
UND UNIQUE KEY
sind ähnlich, außer dass sie unterschiedliche Funktionen haben. Der Primärschlüssel macht die Tabellenzeile eindeutig (d. H. Es können nicht zwei Zeilen mit genau demselben Schlüssel vorhanden sein). Sie können nur einen Primärschlüssel in einer Datenbanktabelle haben.
Der eindeutige Schlüssel macht die Tabellenspalte in einer Tabellenzeile eindeutig (d. H., Keine 2-Tabellenzeile kann denselben exakten Wert haben). Sie können mehr als eine eindeutige Schlüsseltabellenspalte haben (im Gegensatz zum Primärschlüssel bedeutet dies, dass nur eine Tabellenspalte in der Tabelle eindeutig ist).
INDEX
schafft auch Eindeutigkeit. MySQL (Beispiel) erstellt eine Indextabelle für die indizierte Spalte. Auf diese Weise ist es einfacher, den Tabellenzeilenwert abzurufen, wenn die Abfrage für diese indizierte Tabellenspalte ausgeführt wird. Der Nachteil ist, dass MySQL bei vielen Aktualisierungen/Löschungen/Erstellungen die Indextabellen verwalten muss (und dies kann ein Leistungsengpass sein).
Hoffe das hilft.
Eindeutige Schlüssel: Die Spalten, in denen keine zwei Zeilen ähnlich sind
Primärschlüssel: Sammlung einer minimalen Anzahl von Spalten, die jede Zeile in einer Tabelle eindeutig identifizieren können (d. H. Keine zwei Zeilen sind in allen Spalten, die den Primärschlüssel bilden, ähnlich). Eine Tabelle kann mehrere Primärschlüssel enthalten. Wenn ein eindeutiger Schlüssel vorhanden ist, ist er der Primärschlüssel (nicht der Primärschlüssel) in der Tabelle. Wenn es keinen eindeutigen Schlüssel gibt, sind mehrere Spaltenwerte erforderlich, um eine Zeile zu identifizieren, wie sie in einigen Tabellen als Primärschlüssel verwendet werden kann (Vorname, Nachname, Vatername, Muttername).
Index: Wird zur Optimierung der Abfragen verwendet. Wenn Sie die Ergebnisse mehrmals nach einer bestimmten Spalte durchsuchen oder sortieren möchten (z. B. werden die Schüler meistens nach Namen und nicht nach der Rollennummer durchsucht), können Sie die Spaltenwerte optimieren, indem Sie "Alle" auswählen. indexiert "zum Beispiel mit einem binären Baumalgorithmus.
Primärschlüssel - Wir können nur einen Primärschlüssel für eine Tabelle in eine Tabelle einfügen und diese Spalte darf beim Eingeben der Werte in die Tabelle nicht leer bleiben.
Eindeutiger Schlüssel - Wir können mehr als einen eindeutigen Schlüssel in eine Tabelle einfügen und diese Spalte möglicherweise leer lassen, wenn wir die Werte in die Tabelle eingeben. Die Spalte hat eindeutige Werte (nicht dieselben), als der Primär- und der eindeutige Schlüssel angewendet wurden.
Der Primärschlüssel wird zum Arbeiten mit verschiedenen Tabellen verwendet. Dies ist die Grundlage für relationale Datenbanken. Wenn Sie eine Buchdatenbank haben, ist es besser, 2 Tabellen zu erstellen - 1) Bücher und 2) Autoren mit dem INT-Primärschlüssel "id". Dann verwenden Sie id in Büchern anstelle des Autornamens.
Der eindeutige Schlüssel wird verwendet, wenn Sie keine wiederholten Eingaben wünschen. Sie haben möglicherweise einen Titel in Ihrer Buchtabelle und möchten sichergehen, dass für jeden Titel nur ein Eintrag vorhanden ist.
Eindeutiger Schlüssel:
Primärschlüssel