Der Unterschied zwischen Schlüssel und Index in MySQL

Der Unterschied zwischen Schlüssel und Index in MySQL

Schauen wir uns zunächst den Code an:

ALTER TABLE reportblockdetail ADD KEY taskcode (Aufgabencode)
ALTER TABLE reportblockdetail DROP KEY taskcode

Nun, hier wird es tatsächlich verwirrend.

Bei der Verwendung von MySQL achten wir möglicherweise nicht auf dieses Problem, da sie in den meisten Fällen ähnliche Effekte aufweisen, aber dennoch nicht gleichgesetzt werden können (zumindest theoretisch).

Der Unterschied zwischen einem Index und einem Schlüssel liegt in ihren unterschiedlichen Ausgangspunkten. Der Index ist für die Aufrechterhaltung der Such- und Betriebsgeschwindigkeit der Tabelle verantwortlich, während der Schlüssel für die Aufrechterhaltung der Integrität der Tabelle verantwortlich ist.

Wenn diese Verwirrung bei Ihnen auftritt, liegt dies wahrscheinlich an einem seltsamen Phänomen in MySQL:

  • Indizes in MySQL sind Constraint-Indizes (das heißt, beim Erstellen eines Indexes wird automatisch ein Constraint erstellt)
  • Und das Erstellen von Einschränkungen in MySQL geht automatisch mit Indizes einher.

Das ist doch seltsam, oder? Es sind zwei verschiedene Dinge, aber wenn sie erschaffen werden, werden sie miteinander verbunden. Warum ist das so? Denn die Gründe sind:

Der Einschränkungseffekt in MySQL wird durch Indizes erreicht. Die MySQL-Datenbank bestimmt durch eindeutige Indizes, ob die aktuelle Spalte eindeutig ist.

Lassen Sie uns abschließend zusammenfassen:

  • Zu den Constraints zählen Primärschlüssel-Constraints, Unique-Constraints, Fremdschlüssel-Constraints, Not-Null-Constraints, Check-Constraints (Check-Constraints können in MySQL überhaupt nicht verwendet werden, können aber normal festgelegt werden) usw.
  • Zu den Indizes zählen allgemeine Indizes, Primärschlüsselindizes, eindeutige Indizes, gemeinsame Indizes, Volltextindizes usw.
  • Beides kann beim Erstellen einer Tabelle erreicht werden. Nachdem die Tabelle erstellt wurde, kann sie mit der ALTER-Anweisung erstellt und gelöscht werden. Für spezifische Anweisungen suchen Sie bitte bei Baidu nach den beiden oben genannten Punkten. Ich habe sie in MySQL5.5 und der InnoDB-Speicher-Engine getestet.

Theoretisch können MySQL-Schlüssel und -Index nicht gleichgesetzt werden, sie sind nicht dasselbe, aber in der tatsächlichen Verwendung gibt es grundsätzlich keinen Unterschied zwischen ihnen.

Inhaltserweiterung:

Unterschied zwischen Schlüssel und Primärschlüssel

CREATE TABLE wh_logrecord ( 
logrecord_id int(11) NICHT NULL auto_increment, 
Benutzername varchar(100) Standard NULL, 
operation_time datetime Standard NULL, 
logrecord_operation varchar(100) Standardwert NULL, 
PRIMÄRSCHLÜSSEL (logrecord_id), 
SCHLÜSSEL wh_logrecord_user_name (Benutzername) 
)

Unterschied zwischen KEY und INDEX

Hinweis: Dieser Teil verwirrt mich immer noch.
KEY ist oft ein Synonym für INDEX. PRIMARY KEY kann auch nur als KEY angegeben werden, wenn das Schlüsselwortattribut PRIMARY KEY in der Spaltendefinition angegeben ist. Dies geschieht aus Kompatibilitätsgründen mit anderen Datenbanksystemen. PRIMARY KEY ist ein eindeutiger SCHLÜSSEL. In diesem Fall müssen alle Schlüsselwortspalten als NOT NULL definiert werden. Wenn die Spalten nicht explizit als NOT NULL definiert sind, sollte MySQL sie implizit definieren. Eine Tabelle hat nur einen PRIMÄRSCHLÜSSEL.

Der Unterschied zwischen Index und Schlüssel in MySQL

Der Schlüssel ist der Schlüsselwert, der Teil der relationalen Modelltheorie ist. Beispielsweise gibt es Primärschlüssel und Fremdschlüssel, die für Datenintegritätsprüfungen und Eindeutigkeitsbeschränkungen verwendet werden. Der Index befindet sich auf Implementierungsebene. Sie können beispielsweise einen Index für jede Spalte in einer Tabelle erstellen. Wenn sich die indizierte Spalte dann in der Where-Bedingung in der SQL-Anweisung befindet, können Sie die Daten schnell finden und abrufen. Was den Unique Index betrifft, handelt es sich lediglich um einen Indextyp. Die Einrichtung eines Unique Index bedeutet, dass die Daten in dieser Spalte nicht wiederholt werden können. Ich vermute, dass MySQL weitere spezielle Optimierungen für Indizes vom Typ Unique Index vornehmen kann.

Daher muss sich der Schlüssel beim Entwerfen einer Tabelle nur auf Modellebene befinden, und wenn eine Abfrageoptimierung erforderlich ist, können Indizes für die relevanten Spalten erstellt werden.

Darüber hinaus hat MySQL für eine Primärschlüsselspalte automatisch einen eindeutigen Index erstellt, sodass kein erneuter Index dafür erforderlich ist.

Oben finden Sie detaillierte Informationen zum Unterschied zwischen Schlüssel und Index in MySQL. Weitere Informationen zum Unterschied zwischen Schlüssel und Index in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Der Unterschied zwischen KEY, PRIMARY KEY, UNIQUE KEY und INDEX in MySQL
  • Der Unterschied zwischen Schlüssel, Primärschlüssel, eindeutigem Schlüssel und Index in MySQL
  • Kann „Create Index“ in MySQL einen Primärschlüssel erstellen?

<<:  Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden

>>:  So installieren Sie Elasticsearch und Kibana in Docker

Artikel empfehlen

Idea konfiguriert Tomcat zum Starten eines Webprojekts - Grafik-Tutorial

Tomcat konfigurieren 1. Klicken Sie auf „Konfigur...

So finden Sie identische Dateien in Linux

Während der Nutzung des Computers entsteht im Sys...

Einführung in HTML DOM_PowerNode Java Academy

Was ist DOM? Mit JavaScript können Sie das gesamt...

CentOS 8-Installationsdiagramm (superdetailliertes Tutorial)

CentOS 8 ist offiziell veröffentlicht! CentOS ent...

Detaillierte Erklärung der jQuery-Kettenaufrufe

Inhaltsverzeichnis Kettenanrufe Ein kleiner Koffe...

Beispiele für die Verwendung der MySQL-EXPLAIN-Anweisung

Inhaltsverzeichnis 1. Nutzung 2. Ausgabeergebniss...

Mysql GTID Mha-Konfigurationsmethode

Gtid + Mha + Binlog-Serverkonfiguration: 1: Testu...

Zusammenfassung der Ereignisse, die Browser registrieren können

HTML-Ereignisliste Allgemeine Ereignisse: onClick ...

Implementierung der schnellen Projektkonstruktion von vue3.0+vant3.0

Inhaltsverzeichnis 1. Projektkonstruktion 2. Vue3...

Detaillierte Erläuterung des virtuellen DOM in der Vue-Quellcodeanalyse

Warum brauchen wir virtuellen Dom? Virtual DOM wu...

Einige Fallstricke beim JavaScript Deep Copy

Vorwort Als ich zuvor zu einem Vorstellungsgesprä...

Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Während dieser Zeit habe ich Docker studiert und ...

Node-Skript realisiert automatische Anmelde- und Lotteriefunktion

Inhaltsverzeichnis 1. Einleitung 2. Vorbereitung ...

Der Unterschied zwischen KEY, PRIMARY KEY, UNIQUE KEY und INDEX in MySQL

Das im Titel angesprochene Problem lässt sich sch...