Paginering är svårt; RDBMS-modellen är inte väl lämpad för ett stort antal kortlivade frågor med statistisk rullning. Som du noterade tenderar resursanvändningen att vara för hög.
Du har alternativen:
LIMIT
ochOFFSET
- Använda en markör
- Kopiera resultaten till en tillfällig tabell eller till memcached eller liknande och läser sedan det därifrån
x > id
ochLIMIT
Av dessa föredrar jag x > id
med en LIMIT
. Kom bara ihåg det senaste ID du såg och fråga efter nästa. Om du har en monotont ökande sekvens kommer detta att vara enkelt, pålitligt och för enkla frågor kommer det att vara effektivt.