Stránkování je těžké; model RDBMS není příliš vhodný pro velké množství krátkodobých dotazů se stavovým rolováním. Jak jste poznamenali, využití zdrojů bývá příliš vysoké.
Máte možnosti:
LIMIT
aOFFSET
- Pomocí kurzoru
- Kopírování výsledků do dočasné tabulky nebo do memcached nebo podobného a jejich čtení odtud
x > id
aLIMIT
Z nich preferuji x > id
s LIMIT
. Stačí si zapamatovat poslední ID, které jste viděli, a požádat o další. Pokud máte monotónně rostoucí sekvenci, bude to jednoduché, spolehlivé a pro jednoduché dotazy to bude efektivní.