La paginación es difícil; el modelo RDBMS no se adapta bien a un gran número de consultas de corta duración con desplazamiento con estado. Como notó, el uso de recursos tiende a ser demasiado alto.
Tienes las opciones:
LIMIT
yOFFSET
- Usando un cursor
- Copiar los resultados en una tabla temporal o en Memcached o similar, y luego leerlos desde allí
x > id
yLIMIT
De estos, prefiero x > id
con un LIMIT
. Solo recuerde la última identificación que vio y solicite la siguiente. Si tiene una secuencia que aumenta monótonamente, será simple, confiable y, para consultas simples, será eficiente.