代わりにカーソルを使用してください。 OFFSETとLIMITの使用はかなりコストがかかります-pgはクエリを実行し、OFFSET行を処理してスキップする必要があるためです。 OFFSETは「行をスキップ」のようなもので、コストがかかります。
カーソルを使用すると、1つのクエリを繰り返すことができます。
BEGIN
DECLARE C CURSOR FOR SELECT * FROM big_table;
FETCH 300 FROM C; -- get 300 rows
FETCH 300 FROM C; -- get 300 rows
...
COMMIT;
おそらく、 psycopg <でサポートされているだけで、DECLAREステートメントを明示的に使用せずにサーバー側カーソルを使用できます。 / a> (サーバー側カーソルに関する検索セクション)。