PHP(pdo_pgsql)から PostgreSQL に SELECT 文でデータを取得する際に、カーソルを使った場合と使わなかった場合で、どのようにリソース消費(主にメモリと実行時間)の違いがあるのかを計測してみました。 検証内容 PostgreSQL テーブルに、1,000,000 件のレコードを持つテーブルを用意し、下記のようなパターンにて、PHP から全レコードを取得して、実行時間と消費メモリを計測します。カーソル利用時は、1度のフェッチで取得する件数によって計測しています。ここでは、前方向のカーソルのみ扱っています。 1) カーソル未使用 + 1 件づつフェッチ 2) カーソル利用 + 1 件づつフェッチ 3) カーソル利用 + 100 件づつフェッチ 4) カーソル利用 + 10,000 件づつフェッチ 5) カーソル利用 + 100,000 件づつフェッチ 6) カーソル利
![PHP + PostgreSQL カーソルを使ったデータ取得の計測 - Shin x Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/035327bd244bd08f9d39961b8963fbafe855ec00/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fs%2Fshin1x1%2F20160614%2F20160614182705.png)