以下の 2 つのクエリ ケースの間で、どちらが高速か:
update t set v = case when id = 1000000 then 100 when id = 10000000 then 500 else v end
または
update t set v = 100 where id = 1000000;
update t set v = 500 where id = 10000000;
テーブル t には id に一意のインデックスがあり、テーブルはかなり大きくなる可能性があります (数百万のエントリ)。
私の推測では、2 番目のケースでは複数のクエリが作成されますが、最初のケースではテーブルのフル スキャンを実行しているときに、インデックスを使用してエントリを検索できるため、それでも高速です (ただし、これは単なる推測であり、実際にはMySQL が CASE 制御フローをどのように処理するかについての手がかりはありません)。
ご回答ありがとうございます。