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

KAMIJOU.Yasuyoshi kamijou @ assistmicro.co.jp
2004年 5月 11日 (火) 10:04:41 JST


上條と申します。

On Mon, 10 May 2004 23:32:06 +0900 (JST)
yamamoto <yamamoto @ asset-alpha.com> wrote:

> 4.取得した結果をwhile Loopでセッション配列にセット
> 	(一度に全件取得にしたのは再ソートを行う必要があるからです。)

 何故、セッション配列に格納後に再ソートしているのでしょうか?
 単純に、SQL文の「ORDER BY」句を使用する方がレスポンスも良く
 なるのではないでしょうか?

> (実行例.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

 この結果をみると、SQL文実行後に最初のFetch処理が走るまで
 に約4分半の時間が掛かっています。
 該当テーブルのインデックス状態は如何でしょうか?

 ちなみに、あるアプリケーションで「住所テーブル」という
 約40万件のテーブルを作成し、カラムに都道府県コード、市区
 郡コード等の項目を持たせ、ある条件では全件検索になるのだ
 からという理由で都道府県コードにインデックスが貼られてい
 ない状態にて検索を実行した時、SQL実行後の最初のFetch処理
 までが約30分かかっていました。
 そこで、都道府県コードにインデックスを貼り、
 「WHERE 都道府県コード BETWEEN '01' AND '47'」
 という検索条件を追加したところ、最初のFetch処理までの時間
 が数秒になった、というレスポンス改善経験があります。

> このようなケースの場合レスポンスの改善策はないのでしょうか?

 一度、該当テーブルのインデックス設定状態を確認してみては
 如何でしょうか?

 なお、Fetch処理の開始から終了(これは再ソートを含む?)までの
 レスポンスは、やはりセッション配列に格納後再ソートしている
 ためと、私は考えます。


    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
      アシストマイクロ株式会社
            システム開発部       上條 靖芳
      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 メーリングリストの案内