Das Folgende ist mein Urteil basierend auf der Datenstruktur des B+-Baums und meiner Spekulation über die experimentellen Ergebnisse. Wenn es Fehler gibt, korrigieren Sie mich bitte! Heute habe ich mit der Optimierung der MySQL count()-Operation experimentiert. Die folgende Diskussion basiert auf der MySQL 5.7 InnoDB-Speicher-Engine und dem x86-Windows-Betriebssystem. Die Struktur der erstellten Tabelle ist wie folgt (die Datenmenge beträgt 1 Million): Zunächst stellt sich die Frage, welches der MySQL-Verfahren count(*), count(PK) und count(1) schneller ist. Es gibt keinen Unterschied! Nach dem Hinzufügen der WHERE-Klausel ist auch die Zeit für die drei Abfragen gleich, daher werde ich die Bilder nicht veröffentlichen. Als ich vorher in der Firma gearbeitet habe, habe ich eine SQL-Anweisung „ Dies beginnt mit dem InnoDB-Index. Der InnoDB-Index ist B+Tree. Für den Primärschlüsselindex gilt: Er speichert nur Daten auf Blattknoten, sein Schlüssel ist der Primärschlüssel und sein Wert sind die gesamten Daten . Dadurch erhalten wir zwei Informationen: Wenn wir also die count(*)-Operation optimieren möchten, müssen wir eine kurze Spalte finden und einen sekundären Index dafür erstellen. Erstellen Sie zuerst einen Index: Es ist ersichtlich, dass die Abfragezeit von 3,35 s auf 0,26 s gesunken ist und die Abfragegeschwindigkeit um fast das 13-fache zugenommen hat. Wenn der Index die Wie Sie sehen, beträgt die Zeit 0,422 s, was ebenfalls sehr schnell ist, aber immer noch etwa 1,5-mal langsamer als Um etwas mutiger zu sein, werde ich ein Experiment durchführen. Ich werde den Index der Die Zeit beträgt 1,172 s Tabelle ändern test1, Index hinzufügen (Status, Imdbid); Nachfüllen! ! Sie können sehen, dass key_len 6 ist und die Beschreibung von Extra einen Index verwendet. Wenn der Index fehlschlägt: Es gibt viele Situationen, in denen Indizes ungültig werden, z. B. bei der Verwendung von Funktionen, !=-Operationen usw. Einzelheiten finden Sie in der offiziellen Dokumentation. Ich habe MySQL nicht eingehend untersucht und das Obige basiert auf meiner Beurteilung auf der Grundlage der B+-Baumdatenstruktur und Spekulationen über experimentelle Ergebnisse. Wenn es Fehler gibt, korrigieren Sie mich bitte! Dies ist das Ende dieses Artikels über die optimierte Implementierung von count() für große MySQL-Tabellen. Weitere relevante Inhalte zur count()-Optimierung für große MySQL-Tabellen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Häufige Fehler beim Schreiben von HTML-Tags
>>: Webentwicklungs-Tutorial: domänenübergreifende Lösung – detaillierte Erläuterung
1. Gehen Sie zunächst auf die offizielle Website,...
Wie lange ist es her, dass ich meine Kolumne aktu...
Inhaltsverzeichnis 1. Datenbankbeschränkungen 1.1...
In diesem Artikel zeige ich Ihnen, wie Sie mit Ja...
Inhaltsverzeichnis Jenkins-Installation Installie...
Verwenden Sie Docker, um eine flexible Online-PHP...
Um es zusammenzufassen: „Nur lesen“ ist nur für Ei...
Existiert die Zeit wirklich? Manche Menschen glau...
MySQL ist ein relationales Datenbankverwaltungssy...
Inhaltsverzeichnis Hintergrund Problemanalyse 1. ...
Inhaltsverzeichnis 1. Ziehen Sie das Bild 1.1 Zie...
Inhaltsverzeichnis Vorwort Einführung in Dockerfi...
Dieser Artikel stellt den Implementierungscode vo...
Wenn wir den Quellcode vieler Websites überprüfen...
Mixin-Methode: Der Browser kann nicht kompilieren...