Sử dụng con trỏ để thay thế. Sử dụng OFFSET và LIMIT khá tốn kém - vì pg phải thực hiện truy vấn, xử lý và bỏ qua các hàng OFFSET. OFFSET giống như "bỏ qua hàng", đắt tiền.
Con trỏ cho phép lặp lại trên một truy vấn.
BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;
Có thể bạn có thể sử dụng con trỏ phía máy chủ mà không cần sử dụng rõ ràng câu lệnh DECLARE, chỉ với sự hỗ trợ trong psycopg (phần tìm kiếm về con trỏ phía máy chủ).