So zeigen Sie MySql-Indizes an und optimieren sie

So zeigen Sie MySql-Indizes an und optimieren sie

MySQL unterstützt Hash- und B-Tree-Indizes. InnoDB und MyISAM unterstützen nur Btree-Indizes, während die Memory- und Heap-Speicher-Engines sowohl Hash- als auch Btree-Indizes unterstützen können.

Die aktuelle Indexnutzung können wir mit folgender Anweisung abfragen:

Status wie „%Handler_read%“ anzeigen;

+--------------------------+----------+
| Variablenname | Wert |
+--------------------------+----------+
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Zuletzt gelesener Handler | 0 |
| Weiter lesen | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+--------------------------+----------+

Wenn der Index funktioniert, ist der Wert von Handler_read_key hoch. Dieser Wert gibt an, wie oft eine Zeile vom Indexwert gelesen wird. Wenn der Wert niedrig ist, ist die Leistungsverbesserung durch das Hinzufügen eines Index zum Tabellennamen nicht hoch, sodass der Index nicht oft verwendet wird.

Wenn der Handler_read_rnd_next-Wert hoch ist, bedeutet dies, dass die Abfrage ineffizient ausgeführt wird und ein Index erstellt werden sollte, um die Situation zu beheben. Dieser Wert gibt die Anzahl der Anforderungen zum Lesen der nächsten Zeile in der Datendatei an. Wenn viele Tabellenscans stattfinden, ist Handler_read_rnd_next hoch. Dies weist darauf hin, dass der Index falsch ist oder nicht verwendet wird.

Optimierung:

Optimieren Sie die Insert-Anweisung:

1. Versuchen Sie, „insert into test values(),(),(),()...“ zu verwenden.

2. Wenn Sie mehrere Zeilen von verschiedenen Kunden einfügen, können Sie mit der Anweisung INSERT delay eine höhere Geschwindigkeit erzielen. Delayed bedeutet, dass die Anweisung INSERT sofort ausgeführt wird. Tatsächlich werden die Daten in eine Speicherwarteschlange gestellt und nicht wirklich auf die Festplatte geschrieben. Dies ist viel schneller, als jede Anweisung einzeln einzufügen. Low_priority ist genau das Gegenteil. Die Einfügung wird ausgeführt, nachdem alle anderen Benutzer mit dem Lesen und Schreiben der Tabelle fertig sind.

3. Speichern Sie Indexdateien und Datendateien auf verschiedenen Datenträgern (mithilfe von Anweisungen zur Tabellenerstellung).

4. Wenn Sie Batch-Einfügungen durchführen, können Sie den Wert der Variablen bulk_insert_buffer_size erhöhen, um die Geschwindigkeit zu steigern, aber nur für MyISAM-Tabellen.

5. Wenn Sie eine Tabelle aus einer Textdatei laden, verwenden Sie „load data file“, was normalerweise 20-mal schneller ist als „insert“

Optimieren Sie die Group-By-Anweisung:

Standardmäßig sortiert MySQL alle „Group by“-Felder, was „Order by“ ähnelt. Wenn die Abfrage eine Gruppierung nach enthält, der Benutzer jedoch die Verwendung sortierter Ergebnisse vermeiden möchte, können Sie „order by null“ angeben, um die Sortierung zu unterdrücken.

Optimieren Sie die Order By-Anweisung:

In einigen Fällen kann MySQL einen Index verwenden, um die ORDER BY-Klausel zu erfüllen, wodurch die Notwendigkeit einer zusätzlichen Sortierung entfällt. Die Where-Bedingung und Order By verwenden denselben Index, und die Order By-Reihenfolge ist dieselbe wie die Indexreihenfolge, und die Order By-Felder erfolgen in aufsteigender oder absteigender Reihenfolge.

Optimieren verschachtelter Abfragen:

MySQL 4.1 unterstützt nun Unterabfragen, aber in manchen Fällen können Unterabfragen durch effizientere Verknüpfungen ersetzt werden, insbesondere wenn die zu verknüpfende passive Tabelle einen Index hat. Der Grund dafür ist, dass MySQL keine temporäre Tabelle im Speicher erstellen muss, um diese Abfrage abzuschließen, die logischerweise zwei Schritte erfordert.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • MySQL verwendet einen abdeckenden Index, um Tabellenrückgaben zu vermeiden und die Abfrage zu optimieren
  • So optimieren Sie MySQL-Indizes
  • So optimieren Sie die MySQL-Indexfunktion basierend auf dem Schlüsselwort „Explain“
  • So verwenden Sie Indizes zur Optimierung von MySQL ORDER BY-Anweisungen
  • MySQL-Lösung zur funktionalen Indexoptimierung
  • MySQL-Performance-Optimierung: So nutzen Sie Indizes effizient und richtig
  • Ein Artikel zum Erlernen von Fähigkeiten zur Optimierung von MySQL-Indexabfragen
  • MySQL-Datenbankoptimierung: Indeximplementierungsprinzip und Nutzungsanalyse
  • Eine kurze Diskussion zur MySQL-Indexoptimierungsanalyse
  • MySQL verstehen - Zusammenfassung zur Indizierung und Optimierung
  • So entwerfen und optimieren Sie MySQL-Indizes

<<:  Tipps zum Erstellen von Web-Tabellenrahmen

>>:  Vue-Interpretation der responsiven Prinzip-Quellcode-Analyse

Artikel empfehlen

Zählen Sie die Listen-Tags in HTML

1. <dl> definiert eine Liste, <dt> de...

So fügen Sie img-Bilder in Vue-Seiten ein

Wenn wir HTML lernen, führt das Bild-Tag <img&...

Was ist Software 404 und 404-Fehler und was ist der Unterschied zwischen ihnen

Zunächst einmal: Was ist 404 und Soft 404? 404: Ei...

Detaillierte Erläuterung der Nginx Reverse Proxy WebSocket-Konfiguration

Kürzlich habe ich bei der Arbeit an einem Projekt...

Installation und Verwendung von TypeScript und grundlegende Datentypen

Der erste Schritt besteht darin, TypeScript globa...

Anwendung von HTML und CSS in Flash

Anwendung von HTML und CSS in Flash: Ich habe zufä...

Tomcat verwendet Thread-Pool zur Verarbeitung gleichzeitiger Remote-Anfragen

Wenn wir verstehen, wie Tomcat gleichzeitige Anfr...

So bereinigen Sie schnell Milliarden von Daten in einer MySQL-Datenbank

Heute habe ich eine Festplattenalarm-Ausnahme erh...

Einführung in den Prozess zum Erstellen eigener FTP- und SFTP-Server

FTP und SFTP werden häufig als Dateiübertragungsp...

WeChat-Applet-Beispiel für die direkte Verwendung von Funktionen in {{ }}

Vorwort Bei der WeChat-Applet-Entwicklung (native...

Detailliertes Tutorial zur MySQL-Installation und -Konfiguration

Inhaltsverzeichnis Installationsfreie Version von...