14.12 効率よくクエリを繰り返す
類似しているが全く同じではない複数のクエリがあり、それらを効率的に実行したい。
- prepareを使用して、クエリを1回だけ準備しておけば、そのクエリはexecuteを使用して、何回でも繰り返し実行することができる。
$sth = $dbh->prepare($SQL); # クエリを10回実行する for ($i = 0; $i < 10; $i++) { $sth->execute(); while (@row = $sth->fetchrow_array) { # ... } }
- 引数を変化させる場合、DBIのバインド機能を使用する
$sth = $dbh->prepare('SELECT uid, login FROM People WHERE name = ?'); foreach $person (@names) { $sth->execute($person); while (@row = $sth->fetchrow_array) { # ... } }