Heim > Datenbank > MySQL-Tutorial > Warum sind MySQL-Abfragen mit großen LIMIT-Offsets so langsam?

Warum sind MySQL-Abfragen mit großen LIMIT-Offsets so langsam?

Linda Hamilton
Freigeben: 2024-12-13 01:17:09
Original
558 Leute haben es durchsucht

Why Are MySQL Queries with Large LIMIT Offsets So Slow?

Auswirkungen eines höheren LIMIT-Offsets auf die MySQL-Abfragegeschwindigkeit

Beim Abfragen einer großen MySQL-Tabelle mit einem zunehmenden LIMIT-Offset in Verbindung mit ORDER BY, Für Benutzer kann es zu einer erheblichen Verlangsamung der Abfragegeschwindigkeit kommen. Dies wird besonders deutlich, wenn die Tabelle 16 Millionen Datensätze überschreitet oder etwa 2 GB groß ist.

Zum Beispiel wird die folgende Abfrage mit einem kleinen Offset deutlich schneller ausgeführt als die mit einem größeren Offset:

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
Nach dem Login kopieren
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
Nach dem Login kopieren

Obwohl beide Abfragen nur 30 Zeilen abrufen, dauert Letzteres trotz des vernachlässigbaren Overheads von ORDER wesentlich länger BY.

Um dieses Szenario zu optimieren, sollten Sie einen alternativen Ansatz in Betracht ziehen:

  1. Speichern Sie die letzte ID eines abgerufenen Satzes von Zeilen (z. B. lastId = 530).
  2. Ändern Sie die Abfrage so, dass sie die Bedingung WHERE id > enthält. lastId.
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30
Nach dem Login kopieren

Durch die konsequente Beibehaltung eines Null-Offsets wird die Abfrage stets mit optimaler Geschwindigkeit ausgeführt, selbst wenn große Datenmengen in Iterationen abgerufen werden.

Das obige ist der detaillierte Inhalt vonWarum sind MySQL-Abfragen mit großen LIMIT-Offsets so langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage