[PHP-users 21562]Re: 全件取得時のレスポンス改善

Nobuyuki Tsuruta tsuruta @ qnote.co.jp
2004年 5月 10日 (月) 23:49:20 JST


鶴田@qnoteと申します。

whileループの中で、毎回取得件数をoci_num_rowsとかで見てたり
すると遅くなるかも。(PEAR DB使った場合の経験なのでPEAR特有
の動きかもしれませんが。)

こんなの↓

while ($i < oci_num_rows($result)) {
        :
}

改善策↓

$j = oci_num_rows($result);
while ($i < $j) {
        :
}


At 11:32 PM +0900 04.5.10, yamamoto wrote:
>山本と申します。
>
>現在php4.3.4,oracle8.1.7で開発を行っております。
>
>検索結果を表示する際に以下の順序で行っていますが、
>時間がかかり困っています。
>
>1.検索条件でSQL文作成
>2.SQL文のセット(OCIParse)
>3.SQL文の実行(OCIExecute)
>4.取得した結果をwhile Loopでセッション配列にセット
>	(一度に全件取得にしたのは再ソートを行う必要があるからです。)
>
>
>の順で処理を行っています。
>
>条件:ページ表示件数100件、検索結果最大2000件(10ページまで)
>
>以下に実行例を示します。
>
>(実行例.A 検索結果件数292件)
>	1          = 2004/05/10 18:02:16
>	2          = 2004/05/10 18:02:16
>	3          = 2004/05/10 18:02:16
>	4(開始)  = 2004/05/10 18:02:36
>	4(終了)  = 2004/05/10 18:03:31
>
>(実行例.B 検索結果件数2000件以上)
>	1          = 2004/05/10 18:05:28
>	2          = 2004/05/10 18:05:28
>	3          = 2004/05/10 18:05:28
>	4(開始)  = 2004/05/10 18:09:51
>	4(終了)  = 2004/05/10 18:19:20
>
>処理時間を検証してみると3(SQL文の実行)より4(取得した結果を
>セッション配列にセット)に時間がかかっています。
>
>このようなケースの場合レスポンスの改善策はないのでしょうか?
>よろしくお願いします。

-- 
^---------^---------^---------^---------^---------^---------^---------^
     Nobuyuki Tsuruta <tsuruta @ qnote.co.jp>
       Corporate Officer
    Column "Yet Another Business Tool" http://pcweb.mycom.co.jp/
     qnote, inc.
        Maison Bunkyosekiguchi. 206, 1-7-5 Sekiguchi Bunkyo-ku, Tokyo
        TEL/FAX 03-3260-1941
        http://www.qnote.co.jp/
^---------^---------^---------^---------^---------^---------^---------^


PHP-users メーリングリストの案内