Paginacja jest trudna; model RDBMS nie jest dobrze dostosowany do dużej liczby krótkotrwałych zapytań z przewijaniem stanowym. Jak zauważyłeś, zużycie zasobów jest zwykle zbyt wysokie.
Masz opcje:
LIMIT
iOFFSET
- Za pomocą kursora
- Kopiowanie wyników do tabeli tymczasowej lub do memcached lub podobnego, a następnie odczytywanie ich stamtąd
x > id
iLIMIT
Spośród nich wolę x > id
z LIMIT
. Po prostu zapamiętaj ostatni dowód, który widziałeś i poproś o następny. Jeśli masz monotonnie rosnącą sekwencję, będzie to proste, niezawodne i wydajne w przypadku prostych zapytań.