[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 メーリングリストの案内