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

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Installation und Konfiguration von MySQL8.0.22 (s...

Detaillierte Beschreibung der chinesischen ffmpeg-Parameter

Details zu den Parametern der Version FFMPEG 3.4....

Wissenspunkte zum Prinzip der MySQL-Join-Abfrage

Mysql Join-Abfrage 1. Grundlegende Konzepte Verbi...

Alibaba Cloud beantragt ein kostenloses SSL-Zertifikat (https) von Cloud Shield

Da das Projekt den https-Dienst nutzen muss, habe...

Warum wird mir die Zugriffsschnittstelle für Docker Tomcat nicht angezeigt?

Frage: Kann der Ursprungsserver keine Darstellung...

So implementieren Sie Web-Stresstests mit Apache Bench

1. Einführung in Apache Bench ApacheBench ist ein...

Was ist BFC? So löschen Sie Floats mithilfe von CSS-Pseudoelementen

BFC-Konzept: Der Blockformatierungskontext ist ei...

Die heißesten Trends im Webdesign UI im Jahr 2013 Die beliebtesten UI-Designs

Die Zeit vergeht wie im Flug und in nur sechs Tag...

So lösen Sie das Problem der hohen Parallelität in der MySQL-Datenbank

Vorwort Wir alle wissen, dass Startups zunächst m...

Regeln für die Verwendung gemeinsamer MySQL-Indizes

Ein gemeinsamer Index wird auch als zusammengeset...

Detaillierte Erklärung des VUE-Reaktionsprinzips

Inhaltsverzeichnis 1. Grundlage des Responsive-Pr...

Detaillierte Erklärung der MySQL Master-Slave-Inkonsistenz und Lösungen

1. MySQL Master-Slave-Asynchronität 1.1 Netzwerkv...

202 kostenlose, hochwertige XHTML-Vorlagen (1)

Hier präsentiert 123WORDPRESS.COM den ersten Teil...