Lesen Sie den Index von MySQL in einem Artikel

Vorwort

Ein MySQL-Index ist eine Datenstruktur, die zur Steigerung der Geschwindigkeit und Leistung von Datenbankabfragen verwendet wird.

Die Einrichtung eines MySQL-Index ist für den effizienten Betrieb von MySQL sehr wichtig. Der Index kann die Abrufgeschwindigkeit von MySQL erheblich verbessern.

MySQL-Indizes ähneln Buchindizes und ermöglichen Ihnen das schnelle Auffinden und Zugreifen auf bestimmte Daten in einer Tabelle, indem Sie Zeiger auf Datenzeilen speichern.

Wenn beispielsweise MySQL, das ordnungsgemäß entwickelt wurde und Indizes verwendet, ein Lamborghini ist, dann ist MySQL, das nicht entwickelt wurde und Indizes verwendet, ein menschliches Dreirad.

Nehmen Sie als Beispiel die Inhaltsverzeichnisseite (Index) eines chinesischen Wörterbuchs. Mithilfe des Inhaltsverzeichnisses (Index), sortiert nach Pinyin, Strichen, Radikalen usw., können wir die benötigten Wörter schnell finden.

Indizes werden in Einzelspaltenindizes und kombinierte Indizes unterteilt:

  • Einspaltiger Index, das heißt, ein Index enthält nur eine einzelne Spalte, und eine Tabelle kann mehrere einspaltige Indizes haben.
  • Kombinierter Index, d. h. ein Index enthält mehrere Spalten.

Beim Erstellen eines Index müssen Sie sicherstellen, dass der Index auf die Bedingungen der SQL-Abfrageanweisung angewendet wird (normalerweise als Bedingung der WHERE-Klausel).

Tatsächlich ist der Index auch eine Tabelle, die die Primärschlüssel- und Indexfelder speichert und auf die Datensätze der Entitätstabelle verweist.

Obwohl Indizes die Abfrageleistung verbessern können, müssen Sie auch die folgenden Punkte beachten:

  • Indizes erfordern zusätzlichen Speicherplatz.
  • Wenn Einfüge-, Aktualisierungs- und Löschvorgänge für die Tabelle ausgeführt werden, muss der Index beibehalten werden, was sich auf die Leistung auswirken kann.
  • Übermäßige oder unangemessene Indizes können zu Leistungseinbußen führen. Daher müssen Indizes sorgfältig ausgewählt und geplant werden.

1. Gewöhnlicher Index

Indizes können Abfragen erheblich beschleunigen, insbesondere bei der Suche in großen Tabellen. Durch die Verwendung von Indizes kann MySQL die Datenzeilen, die die Abfragebedingungen erfüllen, direkt finden, ohne die gesamte Tabelle Zeile für Zeile zu durchsuchen.

1. Erstellen Sie einen Index

Verwenden Sie die Anweisung CREATE INDEX , um einen normalen Index zu erstellen.

Normale Indizes sind der häufigste Indextyp und werden verwendet, um Abfragen für Daten in einer Tabelle zu beschleunigen.

Syntax von CREATE INDEX :

CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
  • CREATE INDEX: Schlüsselwort zum Erstellen eines normalen Index.
  • index_name: Gibt den Namen des zu erstellenden Index an. Indexnamen müssen innerhalb der Tabelle eindeutig sein.
  • table_name: Geben Sie die Tabelle an, für die der Index erstellt werden soll.
  • (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • ASC und DESC (optional): werden verwendet, um die Sortierreihenfolge des Index anzugeben. Standardmäßig ist der Index in aufsteigender Reihenfolge (ASC) sortiert.

Im folgenden Beispiel wird davon ausgegangen, dass wir eine Tabelle mit dem Namen „Studenten“ mit den Spalten „ID“, „Name“ und „Alter“ haben und einen normalen Index für die Spalte „Name“ erstellen.

CREATE INDEX idx_name ON students (name);

Die obige Anweisung erstellt einen normalen Index mit dem Namen idx_name für die Namensspalte der Schülertabelle, was dazu beiträgt, die Abfrageleistung für Suchen nach Namen zu verbessern.

Es ist zu beachten, dass die Indexerstellung einige Zeit in Anspruch nehmen kann, wenn die Datenmenge in der Tabelle groß ist. Sobald die Erstellung jedoch abgeschlossen ist, wird die Abfrageleistung erheblich verbessert.

2. Ändern Sie die Tabellenstruktur (fügen Sie einen Index hinzu)

Wir können den Befehl ALTER TABLE verwenden, um einen Index in einer vorhandenen Tabelle zu erstellen.

Mit ALTER TABLE können Sie die Struktur einer Tabelle ändern, einschließlich des Hinzufügens, Änderns oder Entfernens von Indizes.

ALTER TABLE-Syntax zum Erstellen eines Index:

ALTER TABLE table_name
ADD INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
  • ALTER TABLE: Schlüsselwort zum Ändern der Tabellenstruktur.
  • table_name: Gibt den Namen der zu ändernden Tabelle an.
  • ADD INDEX: Klausel zum Hinzufügen eines Index. ADD INDEX wird zum Erstellen gewöhnlicher Indizes verwendet.
  • index_name: Gibt den Namen des zu erstellenden Index an. Indexnamen müssen innerhalb der Tabelle eindeutig sein.
  • (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • ASC und DESC (optional): werden verwendet, um die Sortierreihenfolge des Index anzugeben. Standardmäßig ist der Index in aufsteigender Reihenfolge (ASC) sortiert.

Hier ist ein Beispiel, in dem wir einen normalen Index für eine vorhandene Tabelle mit dem Namen „Mitarbeiter“ erstellen:

ALTER TABLE employees
ADD INDEX idx_age (age);

Die obige Anweisung erstellt einen normalen Index mit dem Namen idx_age für die Altersspalte der Mitarbeitertabelle.

3. Geben Sie es direkt beim Erstellen der Tabelle an

Wenn wir eine Tabelle erstellen, können Sie den Index direkt in der Anweisung CREATE TABLE angeben, um eine Kombination aus Tabelle und Index zu erstellen.

CREATE TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...,
  INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);
  • CREATE TABLE: Schlüsselwort zum Erstellen neuer Tabellen.
  • table_name: Geben Sie den Namen der zu erstellenden Tabelle an.
  • (column1, column2, ...): Definieren Sie die Spaltennamen und Datentypen der Tabelle. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • INDEX: Schlüsselwort zum Erstellen eines normalen Index.
  • index_name: Gibt den Namen des zu erstellenden Index an. Indexnamen müssen innerhalb der Tabelle eindeutig sein.
  • (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • ASC und DESC (optional): werden verwendet, um die Sortierreihenfolge des Index anzugeben. Standardmäßig ist der Index in aufsteigender Reihenfolge (ASC) sortiert.

Unten sehen Sie ein Beispiel, in dem wir eine Tabelle mit dem Namen „Studenten“ und einen normalen Index für die Spalte „Alter“ erstellen möchten.

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT,
  INDEX idx_age (age)
);

Im obigen Beispiel haben wir einen normalen Index namens idx_age für die Altersspalte der Schülertabelle erstellt.

4. Syntax zum Löschen von Indizes

Wir können die Anweisung DROP INDEX verwenden, um den Index zu löschen.

Syntax von DROP INDEX:

DROP INDEX index_name ON table_name;
  • DROP INDEX: Schlüsselwort zum Löschen des Index.
  • index_name: Gibt den Namen des zu löschenden Index an.
  • ON table_name: Geben Sie die Tabelle an, für die der Index gelöscht werden soll.

Die Syntax zum Löschen eines Indexes mithilfe der ALTER TABLE-Anweisung lautet wie folgt:

ALTER TABLE table_name
DROP INDEX index_name;
  • ALTER TABLE: Schlüsselwort zum Ändern der Tabellenstruktur.
  • table_name: Gibt den Namen der zu ändernden Tabelle an.
  • DROP INDEX: Klausel zum Löschen eines Index.
  • index_name: Gibt den Namen des zu löschenden Index an.

Im folgenden Beispiel wird davon ausgegangen, dass wir eine Tabelle mit dem Namen „Mitarbeiter“ und einen Index mit dem Namen „idx_age“ für die Altersspalte haben und diesen Index nun löschen möchten:

DROP INDEX idx_age ON employees;

oder verwenden Sie ALTER TABLE Word:

ALTER TABLE employees
DROP INDEX idx_age;

Beide Befehle löschen den Index namens idx_age aus der Mitarbeitertabelle.

Wenn der Index nicht vorhanden ist, tritt beim Ausführen des Befehls ein Fehler auf. Daher ist es am besten, vor dem Löschen zu bestätigen, ob der Index vorhanden ist, oder einen Fehlerbehandlungsmechanismus zu verwenden, um mögliche Fehlerbedingungen zu behandeln.


2. Eindeutiger Index

In MySQL können Sie die CREATE UNIQUE INDEX-Anweisung verwenden, um einen eindeutigen Index zu erstellen.

Ein eindeutiger Index stellt sicher, dass die Werte im Index eindeutig sind und keine doppelten Werte zulässig sind.

Index erstellen

CREATE UNIQUE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
  • CREATE UNIQUE INDEX: Schlüsselwortkombination, die zum Erstellen eines eindeutigen Index verwendet wird.
  • index_name: Gibt den Namen des eindeutigen Index an, der erstellt werden soll. Indexnamen müssen innerhalb der Tabelle eindeutig sein.
  • table_name: Geben Sie die Tabelle an, für die ein eindeutiger Index erstellt werden soll.
  • (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • ASC und DESC (optional): werden verwendet, um die Sortierreihenfolge des Index anzugeben. Standardmäßig ist der Index in aufsteigender Reihenfolge (ASC) sortiert.

Das Folgende ist ein Beispiel für die Erstellung eines eindeutigen Index: Angenommen, wir haben eine Tabelle mit dem Namen „Mitarbeiter“, die ID- und E-Mail-Spalten enthält. Jetzt möchten wir einen eindeutigen Index für die E-Mail-Spalte erstellen, um sicherzustellen, dass die E-Mail-Adresse jedes Mitarbeiters eindeutig ist.

CREATE UNIQUE INDEX idx_email ON employees (email);

Das obige Beispiel erstellt einen eindeutigen Index mit dem Namen idx_email für die E-Mail-Spalte der Mitarbeitertabelle.

Tabellenstruktur ändern

Wir können den Befehl ALTER TABLE verwenden, um einen eindeutigen Index zu erstellen.

Mit dem Befehl ALTER TABLE können Sie die vorhandene Tabellenstruktur ändern, einschließlich des Hinzufügens neuer Indizes.

ALTER table mytable ADD UNIQUE [indexName] (columnName(length))
  • ALTER TABLE: Schlüsselwort zum Ändern der Tabellenstruktur.
  • table_name: Gibt den Namen der zu ändernden Tabelle an.
  • ADD CONSTRAINT: Dies ist das Schlüsselwort, das zum Hinzufügen von Einschränkungen einschließlich eindeutiger Indizes verwendet wird.
  • index_name: Gibt den Namen des eindeutigen Index an, der erstellt werden soll. Einschränkungsnamen müssen innerhalb der Tabelle eindeutig sein.
  • UNIQUE (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • ASC und DESC (optional): werden verwendet, um die Sortierreihenfolge des Index anzugeben. Standardmäßig ist der Index in aufsteigender Reihenfolge (ASC) sortiert.

Das Folgende ist ein Beispiel für die Verwendung des Befehls ALTER TABLE zum Erstellen eines eindeutigen Index: Angenommen, wir haben eine Tabelle mit dem Namen „Mitarbeiter“, die die ID enthält und E-Mail-Spalte möchten wir nun einen eindeutigen Index für die E-Mail-Spalte erstellen, um sicherzustellen, dass die E-Mail-Adresse jedes Mitarbeiters eindeutig ist.

ALTER TABLE employees
ADD CONSTRAINT idx_email UNIQUE (email);

Das obige Beispiel erstellt einen eindeutigen Index mit dem Namen idx_email für die E-Mail-Spalte der Mitarbeitertabelle.

Beachten Sie, dass das Hinzufügen eines eindeutigen Index fehlschlägt, wenn die Tabelle bereits doppelte E-Mail-Werte enthält. Bevor Sie einen eindeutigen Index erstellen, möchten Sie möglicherweise sicherstellen, dass in der Tabelle keine doppelten Werte für die E-Mail-Spalte vorhanden sind.

Geben Sie es direkt beim Erstellen der Tabelle an

Wir können UNIQUE auch in der Anweisung CREATE TABLE verwenden, während wir die Tabelle erstellen   -Schlüsselwort, um einen eindeutigen Index zu erstellen.

Dadurch wird die eindeutige Indexbeschränkung zum Zeitpunkt der Tabellenerstellung definiert.

Syntax zum Erstellen eines eindeutigen Indexes in der CREATE TABLE -Anweisung:

CREATE TABLE table_name (
  column1 data_type,
  column2 data_type,
  ...,
  CONSTRAINT index_name UNIQUE (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);
  • CREATE TABLE: Schlüsselwort zum Erstellen neuer Tabellen.
  • table_name: Geben Sie den Namen der zu erstellenden Tabelle an.
  • (column1, column2, ...): Definieren Sie die Spaltennamen und Datentypen der Tabelle. Sie können eine oder mehrere Spalten als Kombination von Indizes angeben. Der Datentyp dieser Spalten ist normalerweise numerisch, Text oder Datum.
  • CONSTRAINT: Schlüsselwort zum Hinzufügen von Einschränkungen.
  • index_name: Gibt den Namen des eindeutigen Index an, der erstellt werden soll. Einschränkungsnamen müssen innerhalb der Tabelle eindeutig sein.
  • UNIQUE (column1, column2, ...): Geben Sie den Namen der Tabellenspalte an, die indiziert werden soll.

Das Folgende ist ein Beispiel für die Erstellung eines eindeutigen Index beim Erstellen einer Tabelle: Angenommen, wir möchten eine Tabelle mit dem Namen „Mitarbeiter“ erstellen, die die Spalten „ID“, „Name“ und „E-Mail“ enthält. Wir möchten, dass der Wert der E-Mail-Spalte eindeutig ist, also benötigen wir um beim Erstellen der Tabelle einen eindeutigen Index zu erstellen. Definieren Sie einen eindeutigen Index.

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100) UNIQUE
);

In diesem Beispiel wird die E-Mail-Spalte als eindeutiger Index definiert, da das Schlüsselwort UNIQUE an sie angehängt wird.

Bitte beachten Sie, dass nach Verwendung des Schlüsselworts UNIQUE der Indexname automatisch generiert wird. Sie können den Indexnamen auch nach Bedarf angeben.


3. Verwenden Sie den Befehl ALTER, um Indizes hinzuzufügen und zu löschen

Es gibt vier Möglichkeiten, einen Index zu einer Datentabelle hinzuzufügen:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): Diese Anweisung fügt einen Primärschlüssel hinzu, was bedeutet, dass der Indexwert eindeutig sein muss und nicht NULL sein darf.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): Der Wert des durch diese Anweisung erstellten Index muss eindeutig sein (außer NULL, NULL kann mehrmals vorkommen).
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): Fügen Sie einen normalen Index hinzu, der Indexwert kann mehrmals erscheinen.
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):Diese Anweisung gibt den Index als FULLTEXT an, der für die Volltextindizierung verwendet wird.

Das folgende Beispiel fügt der Tabelle einen Index hinzu.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Sie können auch die DROP-Klausel im ALTER-Befehl verwenden, um einen Index zu löschen. Versuchen Sie das folgende Beispiel, um einen Index zu löschen:

mysql> ALTER TABLE testalter_tbl DROP INDEX c;

4. Verwenden Sie den Befehl ALTER, um Primärschlüssel hinzuzufügen und zu löschen

Der Primärschlüssel wirkt auf eine Spalte (eine Spalte oder mehrere Spalten können mit dem Primärschlüssel kombiniert werden). Beim Hinzufügen eines Primärschlüsselindex müssen Sie sicherstellen, dass der Primärschlüssel standardmäßig nicht NULL ist. Beispiele sind wie folgt:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

Sie können einen Primärschlüssel auch mit dem ALTER-Befehl löschen:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

Beim Löschen eines Primärschlüssels müssen Sie nur den PRIMÄRSCHLÜSSEL angeben, beim Löschen eines Indexes müssen Sie jedoch den Indexnamen kennen.


5. Indexinformationen anzeigen

Mit dem Befehl SHOW INDEX können Sie zugehörige Indexinformationen in einer Tabelle auflisten.

Die Ausgabeinformationen können durch Hinzufügen von \G formatiert werden.

SHOW INDEX-Anweisung::

mysql> SHOW INDEX FROM table_name\G
........
  • SHOW INDEX: Schlüsselwort zum Anzeigen von Indexinformationen.
  • FROM table_name: Geben Sie den Namen der Tabelle an, für die Sie Indexinformationen anzeigen möchten.
  • \G: Ausgabeinformationen formatieren.

Nach der Ausführung des obigen Befehls werden detaillierte Informationen zu allen Indizes in der angegebenen Tabelle angezeigt, einschließlich Indexname (Key_name), Indexspalte (Column_name), ob es sich um einen eindeutigen Index handelt (Non_unique), Sortiermethode (Collation) und Index Kardinalität (Kardinalität). Warten.

Supongo que te gusta

Origin blog.csdn.net/m0_61243965/article/details/133915992
Recomendado
Clasificación