Weitergabe von SQL-Optimierungserfahrungen, wenn der Offset beim MySQL-Paging zu groß ist

Weitergabe von SQL-Optimierungserfahrungen, wenn der Offset beim MySQL-Paging zu groß ist

Finden Sie das Problem

Wenn wir den Inhalt in einer Liste anzeigen, treten zwangsläufig Paging-Probleme auf, da die Anzahl der Inhalte in der Liste zwar groß sein kann, die Größe der Schnittstelle, die der Benutzer gleichzeitig sehen kann, jedoch begrenzt ist. Es ist unmöglich, den gesamten Inhalt in einer Schnittstelle anzuzeigen. Wenn zu viele Daten gleichzeitig vom Backend abgerufen werden, wird das Backend zusätzlich belastet.

Normalerweise wird für Paging-Abfragen die folgende Anweisung verwendet:

WÄHLEN
*
FROM-Tabelle
wobei Bedingung1 = 0
und Bedingung2 = 0
und Bedingung3 = -1
und Bedingung4 = -1
Sortieren nach ID aufsteigend
GRENZE 2000 OFFSET 50000

Wenn der Offset besonders groß ist, wird die Ausführungseffizienz dieser Anweisung erheblich reduziert, und die Effizienz nimmt mit zunehmendem Offset ab.

Die Gründe sind:

MySQL überspringt die Offsetzeile nicht, sondern nimmt den Offset + N Zeilen, gibt dann die vorherige Offsetzeile zurück und gibt N Zeilen zurück. Wenn der Offset besonders groß ist und die einzelnen Daten ebenfalls groß sind, ist es umso langsamer, je mehr Daten bei jeder Abfrage abgerufen werden müssen.

Optimierungsplan:

WÄHLEN
*
FROM-Tabelle
VERBINDEN
(ID aus Tabelle auswählen
wobei Bedingung1 = 0
und Bedingung2 = 0
und Bedingung3 = -1
und Bedingung4 = -1
Sortieren nach ID aufsteigend
GRENZE 2000 OFFSET 50000)
als tmp using(id)

oder

Wählen Sie a.* aus Tabelle a, 
(ID aus Tabelle auswählen
wobei Bedingung1 = 0
und Bedingung2 = 0
und Bedingung3 = -1
und Bedingung4 = -1
Sortieren nach ID aufsteigend
GRENZE 2000 OFFSET 50000) b 
wobei a.id = b.id

Holen Sie sich zuerst die Primärschlüsselliste und fragen Sie dann die Zieldaten nach dem Primärschlüssel ab. Selbst wenn der Versatz groß ist, werden viele Primärschlüssel statt aller Felddaten abgerufen. Relativ gesehen wird die Effizienz erheblich verbessert.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So verwenden Sie das MySQL-Limit und lösen das Problem großer Paging-Aufgaben
  • Eine einfache Paging-Optimierungsmethode für MySQL im Fall von Big Data
  • MySQL-Paging-Optimierung auf Millionenebene (MySQL-Fast-Paging auf zehn Millionen Ebenen)
  • Optimierungsmethode für MySQL-Paging-Grenzgeschwindigkeit ist zu langsam
  • MySQL begrenzt die gemeinsame Nutzung von Paging-Optimierungsmethoden
  • MySQL-Lösung zur Datenpaging-Abfrageoptimierung auf Millionenebene
  • Optimieren Sie das MySQL-Limit, verweisen Sie auf den zusammengesetzten Index der schnellen Paging von einer Million auf zehn Millionen und wenden Sie ihn auf ein leichtes Framework an
  • Analyse der MySQL-Paging-Optimierung
  • Optimierung der Leistung von Paging-Abfragen für MySQL mit mehreren zehn Millionen Daten
  • Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

<<:  So stellen Sie versehentlich gelöschte Nachrichtendateien unter Linux wieder her

>>:  Detaillierte Erläuterung der Fallstricke von add_header im Nginx-Konfigurationstutorial

Artikel empfehlen

Verbesserung der Aktualisierungsfunktion für Zen-Codierungsressourcen

Offizielle Website: http://code.google.com/p/zen-c...

Zusammenfassung des JS-Ausführungskontexts und -umfangs

Inhaltsverzeichnis Vorwort Text 1. Konzepte im Zu...

Zusammenfassung der Kenntnisse und der Verwendung von Linux-VI-Befehlen

Detaillierte Erklärung des Linux-Befehls vi Der v...

XHTML-Einführungstutorial: Textformatierung und Sonderzeichen

<br />Dieser Abschnitt stellt die Implementi...

So beheben Sie den Fehler "ERROR 1045 (28000)" beim Anmelden bei MySQL

Heute habe ich mich beim Server angemeldet und mi...

Beispiel für eine Routing-Berechtigungsverwaltungsmethode in Vue2/vue3

1. Es gibt im Allgemeinen zwei Methoden zur Steue...

HTML-Webseite: geordnete Liste ol und ungeordnete Liste ul

Listen zum Organisieren von Daten Nachdem die Les...

6 Lösungen für Netzwerkfehler im Docker-Container

6 Lösungen für Netzwerkfehler im Docker-Container...

Einführung in JavaScript-Array-Deduplizierungs- und -Flatteningfunktionen

Inhaltsverzeichnis 1. Array-Abflachung (auch als ...

Einige wichtige Punkte des visuellen Website-Designs

Vom Kunsthandwerksdesign über Grafikdesign bis hin...