在 MySQL(使用 InnoDB 和 REPEATABLE READ 隔离级别)中发出包含如下子查询的 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 和子查询有什么区别吗?