Vorwort Wenn wir in der täglichen Entwicklung MySQL zur Implementierung von Paging verwenden, verwenden wir immer die MySQL-Grenzsyntax. Aber die Verwendung ist sehr speziell. Lassen Sie uns das heute zusammenfassen. Limit-Syntax Die Grenzwertsyntax unterstützt zwei Parameter: Offset und Limit. Ersterer gibt den Offset an, und letzterer gibt an, dass die ersten Grenzwertdaten übernommen werden. Zum Beispiel: ## Gibt die ersten 10 Anweisungen zurück, die die Bedingungen erfüllen. select * from user limit 10 ## Gibt die 11. bis 20. Daten zurück, die die Bedingungen erfüllen. Wählen Sie * aus dem Benutzerlimit 10,20 Aus dem Obigen ist auch ersichtlich, dass der Grenzwert n dem Grenzwert 0,n entspricht. Leistungsanalyse Bei der tatsächlichen Verwendung werden wir feststellen, dass das Laden einiger Seiten hinter der Paginierung langsamer wird, das heißt: Wählen Sie * ab Benutzerlimit 1000000,10 Die Anweisung wird langsam ausgeführt. Testen wir sie also zuerst. Zunächst nehmen wir 100 Daten mit einem kleinen Offset (die Gesamtdatenmenge beträgt ca. 200). Dann erhöhen wir den Offset schrittweise. select * ab Benutzerlimit 0,100 ---------Zeitaufwand 0,03 s select * ab Benutzerlimit 10000,100 ---------Zeitaufwand 0,05 s select * ab Benutzerlimit 100000,100 ---------Zeitaufwand 0,13 s select * ab Benutzerlimit 500000,100 ---------Zeitaufwand 0,23 s select * ab Benutzerlimit 1000000,100 ---------Zeitaufwand 0,50 s select * ab Benutzerlimit 1800000,100 ---------Zeitaufwand 0,98 s Es ist ersichtlich, dass die Leistung mit zunehmendem Offset immer schlechter wird. Warum ist das so? Weil die Syntax von limit 10000,10 eigentlich bedeutet, dass MySQL die ersten 10010 Datenzeilen findet und dann die ersten 10000 Zeilen verwirft. Dieser Schritt ist eigentlich Verschwendung. Optimierung Optimieren mit ID Suchen Sie zuerst die maximale ID der letzten Paginierung und verwenden Sie dann den Index auf der ID zur Abfrage, ähnlich wie bei „select * from user where id>1000000 limit 100“. Optimieren mit abdeckenden Indizes Wenn eine MySQL-Abfrage einen Index vollständig trifft, wird dies als abdeckender Index bezeichnet. Dies ist sehr schnell, da die Abfrage nur den Index durchsuchen muss und dann direkt zurückkehren kann, ohne zur Datentabelle zurückkehren zu müssen, um die Daten abzurufen. Daher können wir zuerst die Index-ID finden und dann die Daten basierend auf der ID abrufen. select * from (select id from job limit 1000000,100) a left join job b on a.id = b.id; Dies dauerte 0,2 Sekunden. Zusammenfassen Es ist tatsächlich schwierig, MySQL zum Paginieren großer Datenmengen zu verwenden, es gibt jedoch einige Möglichkeiten zur Optimierung, was weitere Tests in Kombination mit Geschäftsszenarien erfordert. Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Linux Bash: ./xxx: Fehler „Binärdatei kann nicht ausgeführt werden“
>>: Mehrere gängige Methoden zum Senden von Anfragen mit Axios in React
In diesem Artikelbeispiel wird der spezifische Co...
Als nächstes werde ich Java+Tomcat auf Centos7 in...
1. Installation 1. Herunterladen Gehen Sie zur of...
Seit seiner Einführung im Jahr 2009 wird Flex von...
Das Debuggen der Website-Kompatibilität ist wirkl...
Beim Anmelden am Stresstest sind viele verschiede...
Wichtige Daten müssen gesichert werden, und zwar ...
Inhaltsverzeichnis Was ist eine Voranalyse? Der U...
In diesem Artikel wird der spezifische Code von V...
In der Datenbank führen sowohl die Schlüsselwörte...
Inhaltsverzeichnis MySQL-Löschsyntax-Aliasproblem...
NodeJS kopiert die Dateien: Für den Kopiervorgang...
Vorwort Nginx ist ein auf Leistung ausgelegter HT...
Inhaltsverzeichnis 1. Unterschiede zwischen Optio...
Was bedeutet Strg+C, Strg+D, Strg+Z in Linux? Str...