So fügen Sie MySQL Indizes hinzu

So fügen Sie MySQL Indizes hinzu

Hier ist eine kurze Einführung in Indizes:

Der Zweck des Hinzufügens von Indizes besteht darin, die Leistung von Datenbankabfragen zu verbessern. Indizes sind die kostengünstigsten Dinge. Es ist nicht erforderlich, Speicher hinzuzufügen, Programme zu ändern oder SQL anzupassen. Führen Sie einfach einen korrekten Indexerstellungsvorgang aus, und die Abfragegeschwindigkeit kann sich um das Hundert- oder Tausendfache erhöhen. Das ist verlockend, aber nicht umsonst. Die Erhöhung der Abfragegeschwindigkeit erfolgt auf Kosten der Geschwindigkeit von Einfügen, Aktualisieren und Löschen. Darüber hinaus beträgt die Indexgröße im Allgemeinen ein Drittel der Daten. Darüber hinaus muss der Index in den Speicher geladen werden. Wenn alle Felder indiziert sind, wird Speicher geopfert. Daher ist es notwendig, Indizes entsprechend hinzuzufügen.

Hier ist eine kurze Einführung in die häufig verwendeten Indizes in MySQL:

Bevor Sie einen Index hinzufügen, prüfen Sie am besten, welche Indizes bereits in der Tabelle vorhanden sind: „Index aus Tabellenname anzeigen“;

1. Primärschlüsselindex

Hinweis: In einer Tabelle kann es nur einen Primärschlüsselindex geben, Sie können jedoch mehrere Indizes hinzufügen, z. B. einen eindeutigen Index, einen normalen Index und einen Volltextindex.

Primärschlüsselindex: Wird normalerweise beim Erstellen der Tabelle hinzugefügt. Beispielsweise ist die ID normalerweise der Primärschlüsselindex plus automatischer Inkrementierung.

alter table table_name add primary key (column name);

Eigenschaften des Primärschlüsselindex: darf nicht leer und eindeutig sein.

2. Gewöhnlicher Index

Erstellen Sie einen normalen Index: alter table table_name add index 索引名(column1,column2);

3. Eindeutiger Index

Erstellen Sie einen eindeutigen Index: ALTER TABLE `table_name` ADD UNIQUE (`column`);

Der Unterschied zwischen einem eindeutigen Index und einem Primärschlüsselindex:

Eindeutiger Index: kann mehrere Nullen enthalten, aber der Dateninhalt darf nicht wiederholt werden

Primärschlüsselindex: darf nicht null sein und der Inhalt muss eindeutig sein.

Der Unterschied zwischen beiden besteht darin, dass der Primärschlüsselindex nicht null sein kann und der eindeutige Index mehrere Nullen enthalten kann. Der Rest ist gleich.

4. Volltextindizierung

Volltextindizierung ist nur für MyISAM verfügbar (InnoDB unterstützt auch Volltextindizierung nach MySQL 5.6) [5.7 unterstützt MyISAM nicht]

Die Volltextindizierung zielt hauptsächlich auf Textdateien wie Artikel und Titel ab.

Erstellen Sie beim Erstellen einer Tabelle einen Volltextindex:

    CREATE TABLE `Artikel` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
     `Titel` varchar(200) DEFAULT NULL,
 ` Inhaltstext`,
      Primärschlüssel (`id`),
      VOLLTEXT-SCHLÜSSEL `Titel` (`Titel`,`Inhalt`)
      ) ENGINE=MyISAM (InnoDB unterstützt nach 5.6 auch die Volltextindizierung, aber 5.7 unterstützt die MyISAM-Engine nicht) DEFAULT CHARSET=utf8;

So erstellen Sie einen Volltextindex für eine vorhandene Tabelle:

ALTER TABLE-Artikel ADD FULLTEXT INDEX Volltext_Artikel (Titel, Inhalt);

Auch bei der Verwendung des Volltextindexes gibt es nach dessen Erstellung einiges zu beachten:

Es ist bekannt, dass Fuzzy-Abfragen in der Datenbank mit dem Schlüsselwort „like“ durchgeführt werden, zum Beispiel:

SELECT * FROM Artikel WHERE Inhalt LIKE '%Abfragezeichenfolge%';

Verwenden wir Volltextindizes auf die gleiche Weise? Natürlich nicht. Für Abfragen mit Volltextindizes müssen wir eine spezielle Syntax verwenden. Wenn wir beispielsweise den Volltext der angegebenen Abfragezeichenfolge in den Spalten „Titel“ und „Inhalt“ der Artikeltabelle suchen möchten, können wir die SQL-Anweisung wie folgt schreiben:

SELECT * FROM Artikel WHERE MATCH(Titel, Inhalt) AGAINST ('Abfragezeichenfolge');

Bitte beachten Sie: Der integrierte Volltextindex von MySQL kann nur Volltextsuchen in englischen Texten durchführen und derzeit keine Volltextsuchen in chinesischen Texten. Wenn wir eine Volltextsuche in Textdaten, einschließlich Chinesisch, durchführen müssen, müssen wir zur Verarbeitung von Chinesisch die Sphinx/Coreseek-Technologie verwenden.

Hinweis: Derzeit werden bei Verwendung des von MySQL bereitgestellten Volltextindex nicht die erwarteten Suchergebnisse erzielt, wenn die Abfragezeichenfolge zu kurz ist. Die standardmäßige Mindestlänge eines Wortes, das in einem MySql-Volltextindex gefunden werden kann, beträgt 4 Zeichen. Wenn die Abfragezeichenfolge Stoppwörter enthält, werden diese Stoppwörter außerdem ignoriert.

Versuchen Sie nach Möglichkeit, die Tabelle zu erstellen und alle Daten einzufügen, bevor Sie den Volltextindex erstellen, anstatt den Volltextindex direkt beim Erstellen der Tabelle zu erstellen, da Ersteres effizienter ist als Letzteres.

Index löschen SQL-Anweisung: alter table table_name drop index 索引名;

Nach der kurzen Einführung oben: Welche Felder sollten indiziert werden?

1. Für häufig abgefragte Felder sollten Indizes erstellt werden.

2. Für Felder, die sehr häufig aktualisiert werden, sollten keine Indizes erstellt werden.

3. Felder mit geringer Eindeutigkeit, wie etwa das Feld „Geschlecht“, sollten nicht indiziert werden.

4. Felder, die nicht nach der Where-Bedingung erscheinen, sollten nicht indiziert werden.

Ein Index sollte erstellt werden, wenn die folgenden Bedingungen erfüllt sind:

1. Für häufig abgefragte Felder, die oft nach der Where-Bedingung erscheinen, sollten Indizes erstellt werden.

2. Für Felder, die nicht häufig aktualisiert werden, können Sie Indizes erstellen.

Hinweise zur Verwendung von Indizes

1. Für einen erstellten mehrspaltigen Index wird der Index im Allgemeinen verwendet, solange die Abfragebedingung die äußerste linke Spalte verwendet.

  • Wir haben beispielsweise einen zusammengesetzten Index zu Titel und Inhalt hinzugefügt
  • select * from table_name where title = 'test'; der Index wird verwendet
  • select * from table_name where content = 'test'; Index wird nicht verwendet

2. Bei Abfragen mit LIKE wird der Index nicht verwendet, wenn die Abfrage „%a“ ist, aber bei „a%“ wird der Index verwendet. Sie können am Anfang keine variablen Werte wie % und _ verwenden

3. Wenn die Bedingung ein „oder“ enthält, wird es nicht verwendet, auch wenn die Bedingung einen Index hat.

4. Wenn der Spaltentyp eine Zeichenfolge ist, müssen Sie die Daten in der Bedingung in Anführungszeichen setzen.

  • Überprüfen Sie die Verwendung des Index: Zeigen Sie den Status wie „Handler_read%“ an.
  • handler_read_key: Je höher der Wert, desto besser. Ein höherer Wert gibt an, wie oft der Index für Abfragen verwendet wird.
  • handler_read_rnd_next: Je höher dieser Wert ist, desto weniger effizient ist die Abfrage.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Mehrere Möglichkeiten zum Hinzufügen von Zeitstempeln in MySQL-Tabellen
  • MySQL implementiert Beispielcode, um doppelte Hinzufügungen beim Hinzufügen eines Einkaufswagens zu verhindern
  • So erstellen Sie eine gespeicherte Prozedur in MySQL und fügen Datensätze in einer Schleife hinzu
  • Zusammenfassung der in MySQL häufig verwendeten SQL-Anweisungen zum Erstellen von Tabellen, Hinzufügen von Feldern, Ändern von Feldern und Hinzufügen von Indizes
  • So fügen Sie einer Tabelle in SQL Felder und Kommentare hinzu

<<:  Vue3.x verwendet mitt.js für die Komponentenkommunikation

>>:  Erläuterung des Beispiels für die automatische Anmeldung unter Linux

Artikel empfehlen

Verwenden Sie js in html, um die lokale Systemzeit abzurufen

Code kopieren Der Code lautet wie folgt: <div ...

Implementierung der Vue-Nuxt-Anmeldeauthentifizierung

Inhaltsverzeichnis einführen Link Start Gehen Sie...

jQuery implementiert einen einfachen Kommentarbereich

In diesem Artikel wird der spezifische Code von j...

Beispielanalyse der MySQL-Datumsverarbeitungsfunktion

Dieser Artikel stellt hauptsächlich die Beispiela...

Detaillierte Erläuterung der Hosts-Dateikonfiguration auf einem Linux-Server

Konfiguration der Hostdatei des Linux-Servers Die...

Diagramm des Prozesses zur Implementierung eines Richtungsproxys durch Nginx

Dieser Artikel stellt hauptsächlich den Prozess d...

Beispielcode eines CSS-responsiven Layoutsystems

Responsive Layoutsysteme sind in den heute gängig...

Lösung für 1067, wenn Mysql in Windows startet

Ich habe erst vor ein paar Tagen mit der Arbeit b...

Mehrere Möglichkeiten zur Implementierung eines 0-ms-Verzögerungstimers in js

Inhaltsverzeichnis WarteschlangeMikrotask asynchr...

Zusammenfassung der Erfahrungen mit der Web-Frontend-Entwicklung

XML-Dateien sollten so weit wie möglich in UTF-8 ...

Vue+js realisiert Video-Ein- und Ausblendeffekte

Vue+js realisiert das Ein- und Ausblenden des Vid...