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:
LIMITaOFFSET- Pomocí kurzoru
- Kopírování výsledků do dočasné tabulky nebo do memcached nebo podobného a jejich čtení odtud
x > idaLIMIT
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í.