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) {
    # ...
  }
}