Heim > Datenbank > MySQL-Tutorial > Warum sind hohe LIMIT OFFSET-Werte in MySQL-Abfragen so langsam?

Warum sind hohe LIMIT OFFSET-Werte in MySQL-Abfragen so langsam?

DDD
Freigeben: 2024-12-15 11:14:11
Original
666 Leute haben es durchsucht

Why Are High LIMIT OFFSET Values in MySQL Queries So Slow?

Auswirkungen eines höheren LIMIT OFFSET auf die MySQL-Abfrageleistung

Beim Ausführen einer SELECT-Abfrage mit einer LIMIT-Klausel und einer großen Tabelle wird ein hoher Wert festgelegt Der Offsetwert kann die Ausführungszeit der Abfrage drastisch verlangsamen. Dieses Verhalten macht sich besonders bemerkbar, wenn die ORDER BY-Klausel mit dem Primärschlüssel verwendet wird.

Stellen Sie sich beispielsweise eine Tabelle namens „groß“ mit über 16 Millionen Datensätzen (2 GB groß) vor. Eine Abfrage wie die folgende:

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

kann viel schneller ausgeführt werden als eine Abfrage mit einem höheren Offset, wie zum Beispiel:

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

Beide Abfragen rufen die gleiche Anzahl von Datensätzen ab (30 ), was darauf hinweist, dass der Leistungsunterschied nicht auf den Overhead der ORDER BY-Operation zurückzuführen ist.

Um die Abfrage zu optimieren, wird empfohlen, die Verwendung hoher LIMIT-Offsets zu minimieren. Erwägen Sie stattdessen die Verwendung einer WHERE-Klausel, um Datensätze basierend auf einem bekannten Bezeichner auszuwählen, was zu einem Null-Offset führt.

Wenn das Ziel beispielsweise darin besteht, die letzten 30 Zeilen abzurufen, kann die folgende Abfrage verwendet werden :

SELECT * FROM large WHERE id > last_known_id LIMIT 0, 30
Nach dem Login kopieren

Durch die Pflege eines Datensatzes der letzten bekannten ID (last_known_id) ermöglicht dieser Ansatz, dass die Abfrage immer bei einem Offset von Null beginnt, was die Leistung erheblich verbessert.

Das obige ist der detaillierte Inhalt vonWarum sind hohe LIMIT OFFSET-Werte in MySQL-Abfragen 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage