Gebruik in plaats daarvan een cursor. Het gebruik van een OFFSET en LIMIT is behoorlijk duur - omdat pg een query moet uitvoeren, verwerken en een OFFSET-rij moet overslaan. OFFSET is als "rijen overslaan", dat is duur.
Cursor staat een herhaling van één zoekopdracht toe.
BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;
Waarschijnlijk kunt u een cursor aan de serverzijde gebruiken zonder expliciet gebruik van de DECLARE-instructie, alleen met ondersteuning in psycopg (zoekgedeelte over cursors aan de serverzijde).