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
Verwenden Sie Javascript, um eine feste Seitenlei...
Inhaltsverzeichnis Vorwort: Verschlüsselungsalgor...
Laden Sie das ZIP-Installationspaket herunter: Do...
Frontend css3.filter kann nicht nur den Graueffek...
<br />Bei Diskussionen mit meinen Freunden h...
Hintergrundinformationen Ich habe kürzlich einige...
Inhaltsverzeichnis Lösung, Zusammenfassen: Vue-Pr...
Vorwort: Ich wollte schon immer wissen, wie eine ...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis 1. Vom Vater zum Sohn 2. Vom S...
Inhaltsverzeichnis 0. Was ist Webpack 1. Einsatz ...
Tomcat greift auf das Projekt zu, normalerweise I...
Nach den Änderungen: innodb_buffer_pool_size=576M...
Um diesen Effekt zu erzielen, müssen Sie zunächst...
Versionsnummer verbergen Die Versionsnummer wird ...