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

Beispielcode zur Implementierung eines Waben-/Sechseckatlas mit CSS

Ich weiß nicht warum, aber UI gestaltet gerne Wab...

CSS Transition erweitert und reduziert Elemente durch Ändern der Höhe

Ein allgemeines Entwicklungsbedürfnis besteht dar...

Zusammenfassung der Unterschiede zwischen Get- und Post-Anfragen in Vue

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Die einfachste Formularimplementierung des Flexbox-Layouts

Flexibles Layout (Flexbox) erfreut sich zunehmend...

Eine kurze Diskussion über vier Lösungen für Vue Single Page SEO

Inhaltsverzeichnis 1.Bereitstellung der serversei...

Ein kurzes Verständnis des Unterschieds zwischen MySQL Union All und Union

Union ist eine Vereinigungsoperation für die Date...

Detaillierte Erklärung des Plattformbusses des Linux-Treibers

Inhaltsverzeichnis 1. Einführung in den Plattform...

Führt diese SQL-Schreibmethode wirklich dazu, dass der Index fehlschlägt?

Vorwort Im Internet gibt es häufig Artikel, die v...

Lösung für die horizontale Bildlaufleiste im Iframe unter IE6

Die Situation ist wie folgt: (PS: Das rote Kästche...

MySQL: Datenintegrität

Die Datenintegrität wird in Entitätsintegrität, D...