[PHP-users 29748] DBからの値取得が遅すぎる。

M.Terao mayo @ b-gets.ddo.jp
2006年 7月 13日 (木) 10:57:45 JST


寺尾です。

処理速度について問題が出てきましたので、ご質問させて下さい。
もしかしたらDB2のことなので、
ML違いかも知れませんが、よろしくお願い致します。

環境は
PHP 4.3.8
Apache 1.3.31
DB2 Express-C
MySQL 12.22
DB.php 1.58
です。


$result = $db->query("SELECT * FROM TABLE WHERE a=1000 order by b");
for($i=0;$i<$result->NumRows();$i++){
	$data[] = $result->fetchRow(DB_FETCHMODE_ASSOC);
}
を実行させております。

※環境の各バージョンに関しては変更することが出来ません。
※SQLの結果は1000件程度です。
※for文の中には他にも処理が入っていますが、関係ないので消してあります。

これを実行すると、MySQL接続時の時は1秒かからず表示されますが、
DB2で実行すると10秒ぐらいかかってしまいます。
また、処理をgetAllに変更してみても、まったく同じ結果でした。

time()を使い明らかにfetchRowが遅いと言うのは分かっています。
DB2が遅いのかと思い同じSQLをコマンドで打ってみましたが、
1秒ぐらいで結果を取得できます。

PHP、PEARが悪い場合は、対処方法をご教授下さい。
DB2が悪い場合は、違うところで聞いてみます。

よろしくお願いします。



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