Analyse der schlechten Leistung, die durch einen großen LIMIT-Offset in der MySQL-Abfrage verursacht wird

Analyse der schlechten Leistung, die durch einen großen LIMIT-Offset in der MySQL-Abfrage verursacht wird

Vorwort

Wir alle wissen, dass MySQL-Abfragen den Befehl select verwenden und mit den Parametern limit und offset Datensätze in einem bestimmten Bereich lesen können. Der Grund, warum der Offset zu groß ist, wirkt sich jedoch auf die Abfrageleistung und die Optimierungsmethode aus

Wir brauchen zwangsläufig Paging in unseren Geschäftssystemen. Wenn Sie an Paging denken, werden Sie auf jeden Fall daran denken, LIMIT in SQL zu verwenden, um es zu implementieren. Die falsche Verwendung von LIMIT kann jedoch zu Leistungsproblemen führen (die SQL-Ausführung ist langsam und kann zum Absturz des Servers führen) und kann von Ihrem Vorgesetzten kritisiert werden. Sehen wir uns also an, wie LIMIT richtig verwendet wird.

Werfen wir einen Blick auf die ausführliche Einführung.

LIMIT OFFSET, ROW_COUNT zum Implementieren der Paginierung

Möglichkeiten für Leistungsprobleme

Wählen Sie * aus meiner Tabelle bestellen nach `id` LIMIT 1000000, 30

Die Person, die diese SQL-Anweisung geschrieben hat, muss gedacht haben: Die MySQL-Datenbank findet direkt die 1.000.000ste Zahl, die die Bedingungen erfüllt, und ruft dann 30 Daten ab.
Dies ist jedoch nicht die tatsächliche Funktionsweise von MySQL.

LIMIT 1000000, 30 bedeutet: 1000030 Zeilen scannen, die die Bedingung erfüllen, die ersten 1000000 Zeilen verwerfen und dann die letzten 30 Zeilen zurückgeben.

Ein besserer Weg

WÄHLEN Sie t.*
AUS (
  Wählen Sie die ID aus.
  VON myTable
  BESTELLEN BIS
    Ausweis
  GRENZE 1000000, 30
  ) Q
WERDEN SIE MITGLIED bei myTable t
EIN t.id = q.id

Das allgemeine Prinzip lautet:

  • Die Unterabfrage verwendet nur die Indexspalte und ruft keine tatsächlichen Daten ab. Sie erfordert daher keine Datenträger-E/A. Daher ist die Abfragegeschwindigkeit auch bei einem relativ großen Offset nicht zu langsam.

Freunde, die an der spezifischen Prinzipanalyse interessiert sind, können diesen Artikel lesen: MySQL ORDER BY / LIMIT-Leistung: Späte Zeilensuche

Nachtrag

Fortgesetzt werden.

Verweise

  • Warum verlangsamt ein höherer LIMIT-Offset von MySQL die Abfrage?
  • MySQL ORDER BY / LIMIT-Leistung: späte Zeilensuche

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. 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:
  • Lösung zur Datenduplizierung bei Verwendung von Limit+Order By in der MySql-Paging
  • Warum wird die MySQL-Paging-Funktion bei Verwendung von Limits immer langsamer?
  • Beschreibung des MySQL-Optimierungsparameters query_cache_limit
  • Detaillierte Erläuterung der Fallstricke beim Mischen von MySQL-Order-By und Limit
  • Gründe und Optimierungslösungen für langsames MySQL-Limit-Paging mit großen Offsets
  • Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
  • MySQL verwendet ein Limit, um die Beispielmethode für Paging zu implementieren
  • So verwenden Sie das MySQL-Limit und lösen das Problem großer Paging-Aufgaben
  • Eine kurze Diskussion über die Leistungsprobleme des MySQL-Paging-Limits
  • MySQL-Limit-Leistungsanalyse und -Optimierung
  • Warum wirkt sich die Verwendung von Limits in MySQL auf die Leistung aus?

<<:  So überwachen Sie die Windows-Leistung auf Zabbix

>>:  Detailliertes Beispiel des Kettenprogrammierstils von jQuery

Artikel empfehlen

Front-End-JavaScript-Funktionsprinzip

Inhaltsverzeichnis 1. Was ist eine JavaScript-Eng...

Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker

Wenn Docker einen Container startet, gibt es den ...

Detaillierte Analyse von MySQL-Ausführungsplänen

Vorwort Als wir im vorherigen Interviewprozess na...

Beispiele für 4 Methoden zum Einfügen großer Datenmengen in MySQL

Vorwort Dieser Artikel stellt hauptsächlich 4 Met...

So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Zum Übertragen von Dateien zwischen dem Host und ...

Implementierung des React Page Turner (inkl. Front- und Backend)

Inhaltsverzeichnis Frontend Entwerfen und schreib...

Beispielcode zum Generieren eines QR-Codes mit js

Vor einiger Zeit musste das Projekt die Funktion ...

Diskussion über die Möglichkeit zum Öffnen von Website-Hyperlinks

Ein neues Fenster wird geöffnet. Vorteile: Wenn d...