Eine kurze Diskussion über MySQL-Index-Designprinzipien und die Unterschiede zwischen gängigen Indizes

Eine kurze Diskussion über MySQL-Index-Designprinzipien und die Unterschiede zwischen gängigen Indizes

Indexdefinition: Es handelt sich um eine separate, auf der Festplatte gespeicherte Datenbankstruktur, die Referenzzeiger zu allen Datensätzen in der Datentabelle enthält.

Prinzipien des Datenbankindex-Entwurfs:

Um die Verwendung von Indizes effizienter zu gestalten, müssen Sie beim Erstellen von Indizes berücksichtigen, für welche Felder Indizes erstellt werden sollen und welcher Indextyp erstellt werden soll.
Was sind also die Prinzipien der Indexgestaltung?

1. Eindeutigen Index auswählen

Der Wert eines eindeutigen Indexes ist eindeutig und Sie können diesen Index verwenden, um einen Datensatz schneller zu identifizieren.
Beispielsweise ist die Studenten-ID in der Studententabelle ein eindeutiges Feld. Durch das Erstellen eines eindeutigen Indexes für dieses Feld können die Informationen zu einem Studenten schnell ermittelt werden.
Bei Verwendung des vollständigen Namens kann es zu Namensdubletten kommen, die die Suche verlangsamen.

2. Erstellen Sie Indizes für Felder, die häufig Sortier-, Gruppierungs- und Vereinigungsvorgänge erfordern

Felder, die häufig Operationen wie ORDER BY, GROUP BY, DISTINCT und UNION erfordern, verschwenden bei Sortieroperationen viel Zeit.
Wenn Sie dafür einen Index erstellen, können Sie Sortiervorgänge effektiv vermeiden.

3. Erstellen Sie Indizes für Felder, die häufig als Abfragebedingungen verwendet werden

Wenn ein Feld häufig als Abfragebedingung verwendet wird, wirkt sich die Abfragegeschwindigkeit dieses Felds auf die Abfragegeschwindigkeit der gesamten Tabelle aus. daher,
Das Erstellen eines Indexes für ein solches Feld kann die Abfragegeschwindigkeit der gesamten Tabelle verbessern.

4. Begrenzen Sie die Anzahl der Indizes

Je mehr Indizes, desto besser. Jeder Index erfordert Speicherplatz. Je mehr Indizes Sie haben, desto mehr Speicherplatz benötigen Sie.
Beim Ändern einer Tabelle ist das Neuaufbauen und Aktualisieren des Indexes mühsam. Je mehr Indizes vorhanden sind, desto zeitaufwändiger wird das Aktualisieren der Tabelle.

5. Versuchen Sie, Indizes mit weniger Daten zu verwenden

Wenn der Indexwert sehr lang ist, wird die Abfragegeschwindigkeit beeinträchtigt. Beispielsweise dauert eine Volltextsuche in einem Feld vom Typ CHAR(100) definitiv länger als eine Volltextsuche in einem Feld vom Typ CHAR(10).

6. Versuchen Sie, die Präfixindizierung zu verwenden

Wenn der Wert des indizierten Felds sehr lang ist, ist es besser, ein Präfix des zu indizierenden Werts zu verwenden. Beispielsweise wäre die Volltextsuche bei Feldern vom Typ TEXT und BLOG Zeitverschwendung. Wenn Sie nur nach den ersten Zeichen eines Feldes suchen, kann dies die Suchgeschwindigkeit erhöhen.

7. Löschen Sie Indizes, die nicht mehr oder nur selten verwendet werden.

Wenn die Daten in der Tabelle in großen Mengen aktualisiert werden oder die Art und Weise geändert wird, wie die Daten verwendet werden, werden einige der ursprünglichen Indizes möglicherweise nicht mehr benötigt. Datenbankadministratoren sollten diese Indizes regelmäßig identifizieren und löschen, um die Auswirkungen der Indizes auf Aktualisierungsvorgänge zu verringern.

8. Kleine Tabellen sollten nicht indiziert werden. Wenn sie eine große Anzahl von Spalten enthalten und nicht nach Werten ungleich Null gesucht werden muss, sollten Sie erwägen, keinen Index zu erstellen.

----------------------------------------------------------

Tipps zur MySQL-Indizierung:

1. Felder, die häufig zum Filtern von Datensätzen verwendet werden.

1. Primärschlüsselfeld, das System erstellt automatisch den Primärschlüsselindex;
2. Für eindeutige Schlüsselfelder erstellt das System automatisch entsprechende Indizes.
3. Die durch die Fremdschlüsseleinschränkung als Fremdschlüssel definierten Felder;

4. Felder, die zum Verknüpfen von Tabellen in Abfragen verwendet werden;

5. Felder, die häufig als Grundlage für die Sortierung verwendet werden (Sortieren nach Feldern);

2. Indizes belegen Speicherplatz und das Erstellen unnötiger Indizes ist nur Verschwendung.

3. Bei der Erstellung von Indizes muss die Art und Weise berücksichtigt werden, wie mit den Daten gearbeitet wird.

1. Der Inhalt ändert sich selten, wird aber häufig abgefragt, daher macht es nichts, wenn Sie mehrere Indizes dafür erstellen;

2. Bei Tabellen, die sich häufig und routinemäßig ändern, müssen Sie die erforderlichen Indizes sorgfältig erstellen.

4. Der Unterschied zwischen Primärschlüssel und eindeutigem Schlüssel

1. Die als Primärschlüssel verwendete Domäne oder Domänengruppe darf nicht null sein. Aber Unique Key kann das.

2. In einer Tabelle kann es nur einen Primärschlüssel geben, aber es können mehrere eindeutige Schlüssel gleichzeitig vorhanden sein.

Der größte Unterschied besteht im Logikdesign. Der Primärschlüssel wird im Allgemeinen als Datensatzkennung im Logikdesign verwendet, was auch die Einstellung ist
Der ursprüngliche Zweck des Primärschlüssels besteht darin, die Eindeutigkeit einer Domäne/Domänengruppe sicherzustellen.

5. Zusammengesetzter Index und Einzelindex

Zusammengesetzter Index bezieht sich auf einen gemeinsamen Index mit mehreren Feldern. Bei der Abfrage werden diese Felder häufig als Abfragebedingungen kombiniert.

Der eindeutige Index wird hauptsächlich durch die Primärschlüssel-ID indiziert und die Reihenfolge der Speicherstruktur entspricht der physischen Struktur.

Beispiel: Erstelle den Index idx auf tbl(a,b)

Sortieren Sie zuerst nach a, und wenn a gleich ist, sortieren Sie nach b. Wenn Sie also nach a oder ab suchen,

Sie können diesen Index verwenden. Wenn Sie jedoch nur nach b suchen, ist der Index nicht sehr hilfreich. Möglicherweise können Sie die Suche überspringen.

---------------------------------------------

Hinzufügen und Entfernen von Indizes:

1. Der Primärschlüssel und der Fremdschlüssel der Tabelle müssen Indizes haben;

2. Tabellen mit mehr als 3 Millionen Datenmengen sollten Indizes haben;

3. Für Tabellen, die häufig mit anderen Tabellen verbunden sind, sollten Indizes für die Verbindungsfelder erstellt werden.

4. Felder, die häufig in der Where-Klausel vorkommen, insbesondere in großen Tabellen, sollten indiziert werden.

5. Indizes sollten auf Feldern mit hoher Selektivität aufgebaut sein;

6. Indizes sollten auf kleinen Feldern erstellt werden. Erstellen Sie keine Indizes auf großen Textfeldern oder sogar sehr langen Feldern.

7. Die Erstellung zusammengesetzter Indizes erfordert eine sorgfältige Analyse. Erwägen Sie stattdessen die Verwendung von Einzelfeldindizes:

A. Wählen Sie das primäre Spaltenfeld im zusammengesetzten Index richtig aus. Im Allgemeinen handelt es sich dabei um ein Feld mit guter Selektivität.

B. Kommen in der Where-Klausel im AND-Modus häufig mehrere Felder eines zusammengesetzten Indexes gleichzeitig vor? Gibt es wenige oder keine Einzelfeldabfragen? Wenn ja, können Sie einen zusammengesetzten Index erstellen. Andernfalls ziehen Sie einen Einzelfeldindex in Betracht.

C. Wenn die im zusammengesetzten Index enthaltenen Felder in der Where-Klausel häufig allein vorkommen, zerlegen Sie sie in mehrere Einzelfeldindizes.

D. Wenn der zusammengesetzte Index mehr als drei Felder enthält, prüfen Sie sorgfältig die Notwendigkeit und ziehen Sie eine Reduzierung der zusammengesetzten Felder in Betracht.

E. Wenn für diese Felder ein Einzelfeldindex und ein zusammengesetzter Index vorhanden sind, können Sie den zusammengesetzten Index im Allgemeinen löschen.

8. Erstellen Sie nicht zu viele Indizes für Tabellen, die häufig Datenoperationen durchführen;

9. Löschen Sie nicht benötigte Indizes, um negative Auswirkungen auf den Ausführungsplan zu vermeiden.

Bei den oben genannten Kriterien handelt es sich um allgemeine Beurteilungskriterien für die Erstellung von Indizes. Kurz gesagt: Bei der Erstellung von Indizes muss mit Vorsicht vorgegangen werden. Die Notwendigkeit jedes Index muss sorgfältig analysiert werden und es muss eine Grundlage für seine Erstellung geben. Denn zu viele Indizes sowie zu wenige oder falsche Indizes wirken sich nicht positiv auf die Leistung aus: Jeder für eine Tabelle erstellte Index erhöht den Speicheraufwand, und der Index erhöht auch den Verarbeitungsaufwand für Einfüge-, Lösch- und Aktualisierungsvorgänge. Darüber hinaus sind zu viele zusammengesetzte Indizes bei Einzelfeldindizes im Allgemeinen nutzlos. Im Gegenteil, sie verringern die Leistung beim Hinzufügen und Löschen von Daten, insbesondere bei Tabellen, die häufig aktualisiert werden.

Der obige Artikel erläutert kurz die Indexdesignprinzipien von MySQL und die Unterschiede zwischen gängigen Indizes. Dies ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Detaillierte Analyse des ganz links stehenden Übereinstimmungsprinzips des MySQL-Gemeinschaftsindex
  • Detaillierte Erläuterung des MySQL-Kombinationsindex und des ganz links stehenden Übereinstimmungsprinzips
  • Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes
  • Beispielcode für das MySQL-Indexprinzip ganz links
  • Verstehen Sie die Prinzipien der MySQL-Indexerstellung in einem Artikel

<<:  So installieren Sie Nginx in CentOS7 und konfigurieren den automatischen Start

>>:  Entwickeln Sie Beispielcode für einen Taschenrechner mit nativem JavaScript

Artikel empfehlen

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Videojs+Swiper realisiert Taobao-Produktdetailkarussell

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

Detaillierte Erklärung der MySQL 30-Militärregeln

1. Grundlegende Spezifikationen (1) Es muss die I...

Implementieren Sie über 24 Array-Methoden in JavaScript von Hand

Inhaltsverzeichnis 1. Traversal-Klasse 1. fürJede...

Einführung in die Generierung von Kubernetes-Zertifikaten mit OpenSSL

Kubernetes unterstützt drei Arten der Authentifiz...

WML-Tag-Zusammenfassung

Strukturbezogene Tags ----------------------------...

Unicode-Signatur-BOM-Problem (Byte Order Mark) für UTF-8-Dateien

Beim Debuggen einer chinesischen Zen Cart-Website...

Codebeispiel für die Verwendung der MySql COALESCE-Funktion

COALESCE ist eine Funktion, die sich nacheinander...

Beispiele für die Verwendung des ES6-Spread-Operators

Inhaltsverzeichnis Was sind Spread- und Rest-Oper...

Auszeichnungssprache – CSS-Stil für Webanwendungen

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...