Wir verwenden während des Entwicklungsprozesses häufig Paging. Die Kerntechnologie besteht darin, Limit zum Lesen von Daten zu verwenden. Während des Tests zur Verwendung des Limits für Paging wurden die folgenden Daten erhalten:
select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 select * from news order by id desc limit 100000,10 耗时0.575秒 select * from news order by id desc limit 1000000,10 耗时7.28秒
Wir waren überrascht, dass die Abfragegeschwindigkeit umso langsamer war, je größer der Paging-Startpunkt von MySQL bei großem Datenvolumen war. Die Abfragegeschwindigkeit für 1 Million Artikel beträgt bereits 7 Sekunden. Das ist ein Wert, den wir nicht akzeptieren können!
Verbesserungsplan 1
select * from news where id > (select id from news order by id desc limit 1000000, 1) order by id desc limit 0,10
Die Abfragezeit beträgt 0,365 Sekunden, die Effizienzverbesserung ist sehr offensichtlich! ! Was ist das Prinzip? ? ?
Wir haben Bedingungen verwendet, um die ID zu filtern (wählen Sie die ID aus der Nachrichtenreihenfolge nach ID-Abgrenzungslimit 1000000, 1) und haben Sie nur das ID-Feld abgefragt des Abfrageaufwands!
Verbesserungsplan 2
Geeignet für Systeme mit fortlaufenden IDs, extrem schnell!
select * from news where id between 1000000 and 1000010 order by id desc
ist nicht für Abfragen mit Bedingungen und diskontinuierlichen IDs geeignet. Sehr schnell!
Das obige ist der detaillierte Inhalt vonMySQL-Paging-Problem unter Millionen von Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!