[PHP-users 21580]Re: 全件取得時のレスポンス改善
KAMIJOU.Yasuyoshi
kamijou @ assistmicro.co.jp
2004年 5月 11日 (火) 11:22:36 JST
上條と申します。
On Tue, 11 May 2004 10:34:45 +0900 (JST)
yamamoto <yamamoto @ asset-alpha.com> wrote:
> メインとなるテーブルは現在のところ、約266万件です。
「メインとなるテーブル」と記述されているということは、検索
対象は一時VIEWなのですね。
となると、結合される他のテーブルのインデックス設定状態の
チェックも必要となります。
しかし、記述されたコードをみると、レコードセットの検索が
2回行われているようにみえます。
> /* 最大件数を超えたらデータを取得しない */
> $nrows = OCIFetchStatement($stmt, $results);
ここで、$resultsに検索結果のレコードセットが配列として
格納されます。
http://www.php.net/manual/ja/function.ocifetchstatement.php
にて関数の再確認をしてください。
> $nrows = 0;
> while(OCIFetch($stmt)){
ここ以下は、再度最初からFetch処理をしていて、取得したい
レコードセット検索が2回処理されています。
従いまして、以下は、上記の「$results」を使用するだけで
良いのではないかと思います。
> /* 最大件数までデータ取得 */
> if($nrows < $_SESSION["MAX_REC"]){
> $results["hogehoge"][$nrows]= OCIResult($stmt,"hogehoge");
>
> (省略)
>
> }
> /* 取得件数カウント */
> $nrows = $nrows + 1;
> /* 最大件数を超えたら終了 */
> if($nrows > $_SESSION["MAX_REC"]){
> break;
> }
> }
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
アシストマイクロ株式会社
システム開発部 上條 靖芳
164-0011 東京都中野区中央5-8-1
朝日生命新中野ビル2F
Tel:03-5340-1541 Fax:03-5328-1691
mailto:kamijou @ assistmicro.co.jp
Home Page:http://www.assistmicro.co.jp
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
PHP-users メーリングリストの案内