Bei 500 Datensätzen ist die Effizienz wahrscheinlich kein Problem. Wenn Sie jedoch über Millionen von Datensätzen verfügen, kann es vorteilhaft sein, eine WHERE-Klausel zu verwenden, um die nächste Seite auszuwählen:
SELECT *
FROM yourtable
WHERE id > 234374
ORDER BY id
LIMIT 20
Die "234374" hier ist die ID des letzten Datensatzes von der vorherigen Seite, die Sie angesehen haben.
Dadurch kann ein Index für die ID verwendet werden, um den ersten Datensatz zu finden. Wenn Sie verwenden, können LIMIT offset, 20
Sie feststellen, dass es langsamer und langsamer wird, wenn Sie gegen Ende blättern. Wie gesagt, es spielt wahrscheinlich keine Rolle, ob Sie nur 200 Datensätze haben, aber es kann bei größeren Ergebnismengen einen Unterschied machen.
Ein weiterer Vorteil dieses Ansatzes besteht darin, dass Sie keine Aufzeichnungen verpassen oder eine wiederholte Aufzeichnung erhalten, wenn sich die Daten zwischen den Anrufen ändern. Dies liegt daran, dass das Hinzufügen oder Entfernen einer Zeile bedeutet, dass sich der Versatz aller Zeilen nach der Änderung ändert. In Ihrem Fall ist es wahrscheinlich nicht wichtig - ich denke, Ihr Anzeigenpool ändert sich nicht zu oft und sowieso würde niemand bemerken, wenn er zweimal hintereinander dieselbe Anzeige erhält - aber wenn Sie nach dem "besten Weg" suchen Dann ist dies eine andere Sache, die Sie bei der Auswahl des zu verwendenden Ansatzes berücksichtigen sollten.
Wenn Sie LIMIT mit einem Versatz verwenden möchten (und dies ist erforderlich, wenn ein Benutzer direkt zu Seite 10000 navigiert, anstatt nacheinander durch die Seiten zu blättern), können Sie diesen Artikel über die Suche nach späten Zeilen lesen , um die Leistung von LIMIT mit einem großen Versatz zu verbessern Versatz.