Wenn wir den Inhalt in einer Liste anzeigen, treten unweigerlich Seitenprobleme auf, da die Menge des Inhalts in der Liste zwar groß sein kann, die Größe der Benutzeroberfläche, die Benutzer gleichzeitig sehen können, jedoch begrenzt ist, und das ist auch der Fall Da es unmöglich ist, den gesamten Inhalt auf einer Oberfläche anzuzeigen, führt das gleichzeitige Abrufen zu vieler Daten vom Backend zu zusätzlicher Belastung des Backends. MySQL-Paging ist eine Funktion, auf die wir in der Entwicklung häufig stoßen. Bei der Implementierung dieser Funktion ist in diesem Artikel hauptsächlich die SQL-Optimierungserfahrung beim MySQL-Paging beschrieben hat einen gewissen Referenz- und Lernwert für jedermanns Studium oder Arbeit. Freunde, die es benötigen, können dem Herausgeber folgen, um einen Blick darauf zu werfen.
Normalerweise wird bei der Durchführung von Paging-Abfragen eine solche Anweisung verwendet:
SELECT * FROM table where condition1 = 0 and condition2 = 0 and condition3 = -1 and condition4 = -1 order by id asc LIMIT 2000 OFFSET 50000
Wenn der Offset besonders groß ist, ist die Ausführungseffizienz dieser Anweisung geringer deutlich reduziert, und die Effizienz nimmt mit zunehmendem Offset ab.
Der Grund ist:
MySQL überspringt die Offset-Zeile nicht, sondern nimmt die Offset+N-Zeile und gibt dann die Offset-Zeile zurück Wenn vor der Rückgabe von N Zeilen der Offset besonders groß ist und die einzelnen Daten ebenfalls groß sind, müssen für jede Abfrage mehr Daten abgerufen werden, was natürlich sehr langsam ist.
Optimierungsplan:
SELECT * FROM table JOIN (select id from table where condition1 = 0 and condition2 = 0 and condition3 = -1 and condition4 = -1 order by id asc LIMIT 2000 OFFSET 50000) as tmp using(id)
oder
SELECT a.* FROM table a, (select id from table where condition1 = 0 and condition2 = 0 and condition3 = -1 and condition4 = -1 order by id asc LIMIT 2000 OFFSET 50000) b where a.id = b.id
Erhalten Sie zuerst die Primärschlüsselliste und fragen Sie dann die Zieldaten über den Primärschlüssel ab. Selbst wenn der Offset groß ist, werden viele Primärschlüssel anstelle aller Felder abgerufen Relativ gesehen wird die Effizienz geringer sein. Eine große Verbesserung.
Verwandte Empfehlungen:
Zusammenfassung der MySQL-Optimierung – Gesamtzahl der Abfragen
Zusammenfassung häufig verwendeter SQL-Anweisungsabfragen zur MySQL-Optimierung Methoden
MySQL-Optimierung umfasst drei Aspekte
Das obige ist der detaillierte Inhalt vonBeispiel für die gemeinsame Nutzung von SQL-Optimierungen, wenn der Offset während des MySQL-Pagings zu groß ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!