PHP(pdo_pgsql)から PostgreSQL に SELECT 文でデータを取得する際に、カーソルを使った場合と使わなかった場合で、どのようにリソース消費(主にメモリと実行時間)の違いがあるのかを計測してみました。 検証内容 PostgreSQL テーブルに、1,000,000 件のレコードを持つテーブルを用意し、下記のようなパターンにて、PHP から全レコードを取得して、実行時間と消費メモリを計測します。カーソル利用時は、1度のフェッチで取得する件数によって計測しています。ここでは、前方向のカーソルのみ扱っています。 1) カーソル未使用 + 1 件づつフェッチ 2) カーソル利用 + 1 件づつフェッチ 3) カーソル利用 + 100 件づつフェッチ 4) カーソル利用 + 10,000 件づつフェッチ 5) カーソル利用 + 100,000 件づつフェッチ 6) カーソル利