sql >> データベース >  >> RDS >> PostgreSQL

postgresql:オフセット+制限が非常に遅くなります

    代わりにカーソルを使用してください。 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> (サーバー側カーソルに関する検索セクション)。



    1. MySQL結合をSQLServer構文に変換しますか?

    2. データベースごとに、mysqldumpファイルを複数のデータベースに分割します

    3. SELECTのチェックサムはMySQLになります

    4. Mysql照合をトルコ語に変更するにはどうすればよいですか?