このようなコードを使用して、mySQL テーブルのエントリを操作する必要があります
foreach($items as $item)
{
$sql = "UPDATE `siteims` SET refs = refs + 1 WHERE imid = '{$item->img}';";
$sql .= "UPDATE `lists` SET refs = refs + 1 WHERE lid = '{$item->lili}'";
$dbh->exec($sql);
}
$items には最大 50 個のアイテムが含まれる場合があります。このコードのバリエーションは次のようになります
foreach($items as $item)
{
if ('z' != $img->img)
$sql = "UPDATE `siteims` SET refs = refs + 1 WHERE imid = '{$item->img}';";
if ('z' != $item->lili)
$sql .= "UPDATE `lists` SET refs = refs + 1 WHERE lid = '{$item->lili}'";
$dbh->exec($sql);
}
どちらの場合も、$items の各アイテムに対して一連の SQL ステートメントを実行しています。私の質問
- アイテムの $sql を作成して実行する方がはるかに効率的ではないでしょうか?
- しかし、$items 内の潜在的に 50 個の項目すべてが意味のある SQL を生成する場合、それは SQL ステートメントのバッチの実行が非常に遅いことを意味するのではないでしょうか?
- 最後に、私のコードの 2 番目のバージョンのように PHP 側のifテストを実行する方が良いですか、それとも単に SQL を作成し、mySQL に WHERE テストが空の行を返すという事実を処理させる方がよいでしょうか?
これについて何か助けていただければ幸いです。