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

Detaillierte Erklärung des TS-Objekt-Spread-Operators und des Rest-Operators

Inhaltsverzeichnis Überblick Objektrestattribut E...

Eine detaillierte Einführung in die CSS-Namensspezifikation BEM von QQtabBar

BEM von QQtabBar Zunächst einmal: Was bedeutet BE...

Drei gängige Möglichkeiten zum Einbetten von CSS in HTML-Dokumente

Die folgenden drei Methoden werden häufig verwende...

Prozessdiagramm zur Implementierung der Zabbix WEB-Überwachung

Nehmen Sie als Beispiel die WEB-Schnittstelle von...

Vue3 (V) Details zur Integration der HTTP-Bibliothek axios

Inhaltsverzeichnis 1. Installieren Sie axios 2. V...

Wie erreicht MySQL die Parallelität mehrerer Versionen?

Inhaltsverzeichnis MySQL-Mehrversionen-Parallelit...

Implementierungsschritte zur Installation eines FTP-Servers in Ubuntu 14.04

Inhaltsverzeichnis Installieren Softwareverwaltun...

Webdesign: Skriptmaterialien rekonstruieren das Benutzererlebnis

<br />Originaltext: http://blog.rexsong.com/...

Javascript realisiert 10-Sekunden-Countdown zur Bezahlung

In diesem Artikel wird der spezifische Code von J...

Beispielcode einer SVG-Schaltfläche basierend auf einer CSS-Animation

Der spezifische Code lautet wie folgt: <a href...