Wann soll ich KEY
, PRIMARY KEY
, UNIQUE KEY
und INDEX
?
Wann soll ich KEY
, PRIMARY KEY
, UNIQUE KEY
und INDEX
?
Antworten:
KEY
und INDEX
sind Synonyme in MySQL. Sie bedeuten dasselbe. In Datenbanken würden Sie Indizes verwenden , um die Geschwindigkeit des Datenabrufs zu verbessern. Ein Index wird in der Regel auf Spalten erstellt , die in JOIN
, WHERE
und ORDER BY
Klauseln.
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 durchlaufen: Dies ist langsam, denn je mehr Datensätze sich in Ihrer Datenbank befinden, desto mehr Arbeit muss sie leisten, 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 Art und Weise, wie 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 Verwenden Sie diese Option, um schnell zu den 'S'-Seiten zu springen.
Primärschlüssel und eindeutige Schlüssel sind ähnlich. Ein Primärschlüssel ist eine Spalte oder eine Kombination von Spalten, mit der eine Zeile eindeutig identifiziert werden kann. Es ist ein Sonderfall eines eindeutigen Schlüssels . Eine Tabelle kann höchstens einen Primärschlüssel, aber mehr als einen eindeutigen Schlüssel haben. Wenn Sie einen eindeutigen Schlüssel in einer 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.
passengers
mit den folgenden Feldern aufgerufen haben (id, first_name, last_name, age, passport_number)
, richten Sie die id
Spalte normalerweise als Primärschlüssel ein. Ein Primärschlüssel ist automatisch ein eindeutiger Schlüssel. Der Hauptunterschied besteht darin, dass Sie nur einen Primärschlüssel in der Tabelle haben können und dass die Spalte keine NULL
Werte enthalten kann . Es ist nicht erforderlich, die id
Spalte so einzurichten , UNIQUE
dass sie durch Festlegen eines Primärschlüssels automatisch eindeutig ist ... Dann können Sie auch festlegen passport_number
, UNIQUE
dass nicht mehr als ein Passagier ...
NULL
problemlos in diese Spalte einfügen .
KEY und INDEX sind Synonyme.
Sie sollten einen Index hinzufügen, wenn Leistungsmessungen und EXPLAIN Ihnen zeigen, 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 die Werte in dieser Spalte (oder diesen Spalten) als eindeutig einschränken möchten, damit Versuche, doppelte Werte einzufügen, zu einem Fehler führen.
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 über eine Fremdschlüsseleinschränkung mit einer anderen Tabelle zu verknüpfen. Obwohl es für eine Tabelle nicht erforderlich ist, einen PRIMARY KEY zu haben, ist dies normalerweise eine gute Idee.
Der Primärschlüssel erlaubt keine NULL
Werte, aber der 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 haben (Spaltenzuweisung).
PRIMARY KEY
UND UNIQUE KEY
sind ähnlich, außer dass es unterschiedliche Funktionen hat. Der Primärschlüssel macht die Tabellenzeile eindeutig (dh es können nicht zwei Zeilen mit genau demselben Schlüssel vorhanden sein). Sie können nur 1 Primärschlüssel in einer Datenbanktabelle haben.
Eindeutiger Schlüssel macht die Tabellenspalte in einer Tabellenzeile eindeutig (dh keine Tabellenzeile 2 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 1 Tabellenspalte in der Tabelle eindeutig ist).
INDEX
schafft auch Einzigartigkeit. MySQL (Beispiel) erstellt eine Indizierungstabelle für die indizierte Spalte. Auf diese Weise ist es einfacher, den Tabellenzeilenwert abzurufen, wenn die Abfrage für diese indizierte Tabellenspalte abgefragt wird. Der Nachteil ist, dass MySQL bei vielen Aktualisierungen / Löschungen / Erstellungen die Indizierungstabellen verwalten muss (und dies kann ein Leistungsengpass sein).
Hoffe das hilft.
UNIQUE KEY
Kann auch sein , kann NULL
aber PRIMARY KEY
nicht sein NULL
.
Eindeutige Schlüssel: Die Spalten, in denen keine zwei Zeilen ähnlich sind
Primärschlüssel: Sammlung einer Mindestanzahl von Spalten, mit denen jede Zeile in einer Tabelle eindeutig identifiziert werden kann (dh keine zwei Zeilen sind in allen Spalten, aus denen der Primärschlüssel besteht, ähnlich). Eine Tabelle kann mehr als einen Primärschlüssel enthalten. Wenn ein eindeutiger Schlüssel vorhanden ist, handelt es sich um einen Primärschlüssel (nicht "den" Primärschlüssel) in der Tabelle. Wenn kein eindeutiger Schlüssel vorhanden ist, sind mehr als ein Spaltenwert erforderlich, um eine Zeile zu identifizieren, wie (Vorname, Nachname, Vatername, Muttername) in einigen Tabellen den Primärschlüssel darstellen kann.
Index: Wird zur Optimierung der Abfragen verwendet. Wenn Sie die Ergebnisse mehrmals anhand einer Spalte suchen oder sortieren (z. B. werden die Schüler meistens nach Namen und nicht nach ihrer Rollennummer durchsucht), kann dies optimiert werden, wenn alle Spaltenwerte " indiziert "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 nicht leer lassen, wenn wir die Werte in die Tabelle eingeben.
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. Spalte nehmen eindeutige Werte (nicht gleich) an, wenn wir Primär- und eindeutigen Schlüssel angewendet haben.
Der Primärschlüssel wird verwendet, um mit verschiedenen Tabellen zu arbeiten. 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 Autorennamens.
Der eindeutige Schlüssel wird verwendet, wenn Sie keine wiederholten Einträge wünschen. Beispielsweise haben Sie möglicherweise einen Titel in Ihrer Buchtabelle und möchten sicherstellen, dass für jeden Titel nur ein Eintrag vorhanden ist.
Einzigartiger Schlüssel :
Primärschlüssel