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