BENCHMARK()がありますが、SQL文の結果としては常に0が返ってきてしまいます。
BENCHMARK(繰り返す回数,SQL文)
mysql> SELECT BENCHMARK(1000000,ENCODE("hello","goodbye"));
+----------------------------------------------+
| BENCHMARK(1000000,ENCODE("hello","goodbye")) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+
1 row in set (4.74 sec)
単純に時間だけ欲しいならこれを使いますが、SQL文の結果も欲しい場合は、PerlのモジュールであるTime::HiResを使うほうをお勧めします。
use DBI;
use Time::HiRes qw(gettimeofday tv_interval);
$db = DBI->connect('dbi:mysql:dbname=hogedb', 'user', 'password',{RaiseError=>1});
$start = [gettimeofday];
$sth = $db->prepare('SELECT hoge, FROM huge WHERE no > 100 ');
$sth->execute;
while ($hoge = $sth->fetchrow_array){
~ 略 ~
}
$sth->finish;
$result = tv_interval($start,[gettimeofday]); #掛かった時間
お礼
大変参考になりました。丁寧にお答えいただきありがとうございます。早速、作ってみます。ありがとうございました。