用一个表更新另一个表的优化写法

现在有两个表a,b
想用b表更新a表中的内容
update a set a.name = b.name where a.id = b.id
然后有6000多条数据,但是执行起来好慢好慢。有什么优化写法吗?
或者,为什么会这么慢?这个语句是怎么运行的?

阅读 2.5k
2 个回答

如果你的数据库支持update ... from

update a set a.name=b.name
from b where a.id=b.id

否则:

update a set name = (select name from b where a.id=b.id)
where id in (select id from b)

第二种写法可能会比较慢。

LEFT JOIN

UPDATE a LEFT JOIN b USING (id) SET a.name = b.name
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题