Beispielanalyse der Auswirkungen des MySQL-Index auf die Sortierung

Beispielanalyse der Auswirkungen des MySQL-Index auf die Sortierung

Dieser Artikel veranschaulicht anhand von Beispielen den Einfluss von MySQL-Indizes auf die Sortierung. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Indizes können nicht nur die Abfragegeschwindigkeit verbessern, sondern auch die Sortiergeschwindigkeit erhöhen. Wenn die Anweisung nach order by den Index verwendet, wird die Sortiergeschwindigkeit verbessert.

prüfen

1. Erstellen Sie eine Testtabelle: t15-Tabelle

CREATE TABLE `t15` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `cat_id` int(10) unsigned NICHT NULL STANDARD '0',
 `Preis` Dezimalzahl (10,2) NICHT NULL STANDARD '0,00',
 `name` char(5) NICHT NULL STANDARD '',
 Primärschlüssel (`id`),
) ENGINE=InnoDB STANDARD-CHARSET=utf8

2. 10.000 Datenzeilen einfügen

<?php
$db = "Test";
$conn = mysql_connect('localhost','root','1234');
mysql_query('verwenden ' . $db , $conn);
mysql_query('Namen auf utf8 festlegen', $conn);
für($i=1;$i<=10000;$i++) {
  $cat_id = rand(1,10);
  $preis = rand(1,50000);
  $name = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,5);
  $sql = sprintf("in t15-Werte einfügen (%d, %d, %f, '%s')", $i, $cat_id, $price, $name);
  : mysql_query($sql, $conn);
}

3. Websites von Einkaufszentren sortieren Preise normalerweise nach einer bestimmten Kategorie. Lassen Sie uns dies simulieren und dieselbe SQL-Anweisung ausführen.

Wählen Sie Name, Kat.-ID, Preis aus t15, wobei Kat.-ID = 1, sortiert nach Preis;

(1) Fügen Sie nicht zuerst einen Index hinzu

Aus der Abfrageanalyse können wir ersehen, dass in Extra Using filesort verwendet wird, was darauf hinweist, dass eine Dateisortierung erforderlich ist.

這里寫圖片描述

(2) Fügen Sie der Spalte (cat_id, price) einen Index hinzu

Tabelle ändern t15, Index hinzufügen cp(cat_id,price);

In der Abfrageanalyse hier verwendet Extra nicht Using filesort, was bedeutet, dass das SQL, das den Index hinzufügt und dann die Abfrage ausführt, keine externe Sortierung verwendet, sondern die Indexsortierung verwendet. Da der Index selbst sortiert ist, ist kein zusätzliches „order by“ erforderlich.

這里寫圖片描述

4. Beobachtungsabfragezeit

這里寫圖片描述

Die Anweisung mit Query_ID 1 wird ohne Hinzufügen eines Index ausgeführt, und die Anweisung mit Query_ID 3 wird nach Hinzufügen eines Index ausgeführt. Die Ausführungszeit der einen beträgt 0,013 Sekunden, die Ausführungszeit der anderen 0,005 Sekunden. Mit dem Index ist es definitiv schneller. Mal sehen, wo es schneller ist.

Detaillierte zeitaufwändige Grafik der SQL-Anweisung mit Query_ID 1:

這里寫圖片描述

Detailliertes Zeitverbrauchsdiagramm für die SQL-Anweisung mit Query_ID 3:

這里寫圖片描述

Offensichtlich dauert Sorting result in Query_ID1 0,012 Sekunden, während Sorting result in Query_ID2 nur 0,000004 Sekunden dauert und dieses Sorting result die Sortierzeit ist.

Schlussfolgerung: Der Index hat einen gewissen Einfluss auf die Sortiergeschwindigkeit. Daher ist es bei der tatsächlichen Entwicklung erforderlich, den Index basierend auf der tatsächlichen Situation zu formulieren und dem Index so viele Sortierfelder wie möglich hinzuzufügen.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „Zusammenfassung der Kenntnisse im Bereich MySQL-Indexoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Allgemeinfunktionen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Protokolloperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Transaktionsoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-gespeicherte Prozeduren“ und „Zusammenfassung der Kenntnisse im Zusammenhang mit MySQL-Datenbanksperren“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Kenntnisse zur Überwachung der MySQL-Indexnutzung (es lohnt sich, sie zu erwerben!)
  • Detaillierte Erläuterung der MySQL-Zeilensperren beim Auftreten zusammengesetzter Primärschlüssel und mehrspaltiger Indizes
  • Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden
  • Wird der Index in der MySQL-Abfragebedingung verwendet?
  • So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos
  • Detaillierte Erläuterung der Einschränkungen und Beschränkungen von MySQL-partitionierten Tabellen
  • MySQL-Abfrageanweisung verwendet Limit, um die Anzahl der abgefragten Zeilen zu begrenzen
  • Lösung für das Problem, dass die MySQL-Verbindungsanzahl das Limit überschreitet
  • Analyse des Prinzips der MySQL-Indexlängenbeschränkung

<<:  Detaillierte Erklärung der Lösung für das Nginx-Panikproblem

>>:  Kleines Programm zur Implementierung eines einfachen Taschenrechners

Artikel empfehlen

Der Button hat einen hässlichen grauen Rand. Wie kann ich ihn entfernen?

Ich habe den Dialog beim Schließen verwendet und e...

Tutorial zur HTML-Tabellenauszeichnung (9): Zellabstandsattribut CELLSPACING

Damit die Tabelle nicht zu kompakt wirkt, kann zw...

Natives JS zur Implementierung der Formularvalidierungsfunktion

Inhaltsverzeichnis Bei der Entwicklung kann eine ...

Fallstricke bei langsamen MySQL-Abfragen

Inhaltsverzeichnis 1. Langsame Abfragekonfigurati...

Drei gängige Stilselektoren in HTML-CSS

1: Tag-Selektor Der Tag-Selektor wird für alle Ta...

Reines js, um den Effekt eines Karussells zu erzielen

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

So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos

Vorwort Kürzlich stieß ich bei der Arbeit auf ein...

Prinzipien und Beispiele für Lambda-Ausdrücke

Lambda-Ausdrücke Lambda-Ausdrücke, auch Closures ...

Teilen Sie 12 häufig verwendete Loader in Webpack (Zusammenfassung)

Inhaltsverzeichnis Vorwort Stillader CSS-Lader Sa...

Implementierung des Nginx-Proxy-Ports 80 bis Port 443

Die Konfigurationsdatei nginx.conf lautet wie fol...