Analyse der MySql-Indexnutzungsstrategie

Analyse der MySql-Indexnutzungsstrategie

MySql-Index

Indexvorteile

1. Sie können die Eindeutigkeit der Daten sicherstellen, indem Sie einen eindeutigen Index oder Primärschlüsselindex erstellen.
2. Verbessern Sie die Leistung abgerufener Daten
3. Die Verbindungsbedingungen in der Tabellenverbindung können die direkte Verbindung zwischen Tabellen beschleunigen
4. Erstellen Sie Indizes. Die Verwendung von Indizes in Abfragen kann die Leistung verbessern.

Index-Nachteile

1. Das Erstellen und Verwalten von Indizes nimmt Zeit in Anspruch, die mit der Datenmenge zunimmt.
2. Indexdateien belegen physischen Speicherplatz. Zusätzlich zu dem für die Datentabelle erforderlichen physischen Speicherplatz nimmt jeder Index auch eine bestimmte Menge physischen Speicherplatzes ein.
3. Beim Einfügen, Aktualisieren oder Löschen von Daten in einer Tabelle muss der Index auch dynamisch verwaltet werden, was den Datenverwaltungsprozess verlangsamt.

(Durch das Erstellen eines Indexes wird Speicherplatz für die Indexdatei beansprucht. Normalerweise ist dieses Problem nicht allzu schwerwiegend, wenn Sie jedoch mehrere kombinierte Indizes für eine große Tabelle erstellen, wird die Indexdatei schnell größer.)

Was bei der Verwendung von Indizes zu beachten ist

1. Beschleunigen Sie die Indizierung häufig gesuchter Spalten
2. Die Eindeutigkeit der Spalte kann anhand der Primärschlüsselspalte sichergestellt werden
3. Das Hinzufügen von Indizes zu den Verbindungsbedingungen zwischen Tabellen kann die Verbindungsabfrage beschleunigen.
4. Das Hinzufügen von Indizes zu bestimmten Spalten, die häufig zum Sortieren (Order by), Gruppieren (Group by) usw. verwendet werden, kann die Sortierabfragezeit beschleunigen. (Order by allein kann keine Indizes verwenden, also sollten Sie erwägen, dem Index „where“ oder „limit“ hinzuzufügen.)
5. Erstellen Sie einen Index für das Feld nach einigen Where-Klauseln < <= > >= BETWEEN IN und wie in einigen Fällen (B-TREE)

6. Wenn Sie einen Index für das Spitznamenfeld in der Like-Anweisung erstellen, funktioniert der Index nicht, wenn die Abfrageanweisung nickname lick '%ABC%' lautet. Der Index funktioniert jedoch, wenn die Abfrageanweisung nickname lick 'ABC%' lautet.

7. Der Index enthält keine NULL-Spalten. Wenn eine Spalte NULL-Werte enthält, wird sie nicht in den Index aufgenommen. Wenn eine Spalte in einem zusammengesetzten Index NULL-Werte enthält, ist der zusammengesetzte Index ungültig. Im Allgemeinen ist ein Standardwert von 0 oder die Zeichenfolge „ “ erforderlich.

8. Verwenden Sie kurze Indizes. Wenn eines Ihrer Felder Char(32) oder int(32) ist, geben Sie beim Erstellen des Index eine Präfixlänge an, z. B. die ersten 10 Zeichen (vorausgesetzt, die meisten Werte sind eindeutig). Dann können kurze Indizes die Abfragegeschwindigkeit erhöhen, Speicherplatz sparen und E/A-Vorgänge reduzieren.

9. Führen Sie keine Operationen an Spalten durch, da dies den MySQL-Index ungültig macht und einen vollständigen Tabellenscan durchführt

10. Wählen Sie den kleineren Datentyp, desto besser. Denn normalerweise gilt: Je kleiner der Datentyp, desto weniger Speicherplatz wird auf der Festplatte, im Speicher, in der CPU und im Cache belegt und desto schneller ist die Verarbeitung.

Wann sollte kein Index erstellt werden?

1. Spalten, die selten in Abfragen verwendet werden, sollten nicht indiziert werden. Wenn jedoch Indizes erstellt werden, verringert sich die MySQL-Leistung und der Speicherplatzbedarf steigt.
2. Spalten mit sehr wenigen Daten sollten nicht indiziert werden. Beispielsweise ein Geschlechtsfeld mit 0 oder 1. In der Abfrage machen die Daten im Ergebnissatz einen großen Anteil der Datenzeilen in der Tabelle aus. MySQL muss eine große Anzahl von Zeilen scannen. Das Hinzufügen von Indizes verbessert die Effizienz nicht.
3. Spalten, die als Text-, Bild- und Bit-Datentypen definiert sind, sollten keine Indizes hinzugefügt werden.
4. Wenn die Änderungsvorgänge (UPDATE, INSERT, DELETE) der Tabelle viel umfangreicher sind als die Abrufvorgänge (SELECT), sollten Sie keinen Index erstellen. Diese beiden Vorgänge schließen sich gegenseitig aus.

Oben finden Sie eine detaillierte Analyse der MySQL-Indexnutzungsstrategie. Weitere Informationen zum MySQL-Index finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • MySQL-Lernprogramm Clustered Index
  • Absteigender Index in MySQL 8.0
  • Index-Skip-Scan in MySQL 8.0
  • Zusammenfassung mehrerer Situationen, in denen MySQL-Indizes fehlschlagen
  • Detaillierte Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex
  • Unterschied zwischen MySQL Btree-Index und Hash-Index
  • MySQL-Lösung zur funktionalen Indexoptimierung
  • Zusammenfassung einiger gängiger Schreibmethoden, die zu MySQL-Indexfehlern führen
  • Verschiedene Arten von MySQL-Indizes

<<:  Codebeispiele für allgemeine Docker-Datenvolumenvorgänge

>>:  JavaScript zum Erzielen eines einfachen Lupeneffekts

Artikel empfehlen

MySQL 8.0.12 Installationskonfigurationsmethode und Kennwortänderung

In diesem Artikel werden die Installations- und K...

VUE implementiert eine Timeline-Wiedergabekomponente

In diesem Artikelbeispiel wird der spezifische Co...

Analyse der MySql CURRENT_TIMESTAMP-Funktion anhand eines Beispiels

Beim Erstellen eines Zeitfelds STANDARD CURRENT_T...

Analyse des Verwendungsbeispiels für den Common Table Expression CTE in mysql8

Dieser Artikel beschreibt anhand eines Beispiels ...

Grundlegendes Tutorial zur Steuerung des mobilen Roboters Turtlebot3 mit ROS

Chinesisch-Tutorial https://www.ncnynl.com/catego...

Detaillierte Erläuterung der Verwendung von MySQL Explain (Analyseindex)

EXPLAIN zeigt, wie MySQL Indizes verwendet, um Au...

CSS3 Flexible Box Flex, um ein dreispaltiges Layout zu erreichen

Wie der Titel schon sagt: Die Höhe ist bekannt, d...

Nexus verwendet Nginx-Proxy zur Unterstützung des HTTPS-Protokolls

Hintergrund Alle Unternehmenswebsites müssen das ...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)

Vorwort Ich habe MySQL 5.6 bereits installiert. D...