次のようなサブクエリを含む (InnoDB と REPEATABLE READ 分離レベルを使用して) MySQL で UPDATE ステートメントを発行する場合:
UPDATE bar INNER JOIN (SELECT i1, i2 FROM foo) inner
ON bar.b1 = inner.i1
SET bar.b2 = inner.i2)
InnoDB エンジンは、テーブルから影響を受けるすべての行のみをロックしますか?それとも、クエリ全体の間bar
、テーブル内のアクセスされたすべての行を(共有または排他的に) ロックしますか?foo
サブクエリの代わりにJOINに違いはありますか?