[PHP-users 3099] Re: 件数制限

Nakamura Kazuto php-users@php.gr.jp
Wed, 24 Oct 2001 18:34:42 +0900


中村です。

>> >けで、件数毎に区切っての閲覧はできていない状態です。そこ
>> >でブラウザ上に”前へ”、”後へ”ボタンを作って、そのボタ
>> >ンを押すタイミングで前の10件、後の10件というように件数を
>> >区切って表示して行きたいのです。
>> これに関しては、sql云々の問題ではなく、表示させるスクリプトの
>> 問題ではないですか?
>自分の経験に基づくのですが、一旦DBから条件に一致する全レコードを取得し、
>その中でオフセットを決めて取り出すという方法は、レコード数が100件やそこ
>らの場合は良いのですが、これが1万件などになると、メモリとネットワークト
>ラフィックにかなりの負荷をかけることになりました。
>なもので、現在は必ずSQL側で制限を掛けて抜き出す方法を使用しています。

自分もメモリallocが巨大に膨れ上がるのが一番のボトルネックと思って
居るのですがみなさんはどのように処理されているのでしょう?

自分は総件数をまず取得し、それが大丈夫となった場合に改めて本データ
の取得をするという方法を取っていますが、2度SQLを発行するという点に
満足していません。

$buff = "select count(*) from table where 〜";
$result = pg_Exec($conn,$buff);
if (pg_Result($result,0,0) > 100) { echo "Too many hits."; exit;}
$buff = "select * from table where 〜 offset 〜 order by 〜 ";
$result = pg_Exec($conn,$buff);
:

--
中村  和人  kazuto@sainet.or.jp