Brug en markør i stedet for. Det er ret dyrt at bruge en OFFSET og LIMIT - fordi pg skal udføre forespørgsel, behandle og springe en OFFSET-rækker over. OFFSET er ligesom "spring rækker over", det er dyrt.
Markøren tillader en iteration over én forespørgsel.
BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;
Sandsynligvis kan du bruge en markør på serversiden uden eksplicit brug af DECLARE-sætning, bare med understøttelse i psycopg (søg sektion om serversidemarkører).