100W的数据进行部分条件下的更新,除了IN方式有没有什么更好的选择?

findshine 2017-11-03 02:56:11
100W的数据进行部分条件下的更新,除了IN方式有没有什么更好的选择?

例如:

100W的数据,查出符合某个条件的10000数据要进行更新,那么除了查询这1W的数据后使用IN进行更新有没有什么更好效率的选择?
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kampoo 2017-11-09
  • 打赏
  • 举报
回复
通过表的关联查询来更新,比先SELECT 子查询 然后 IN 的效率要好些,举例如下: UPDATE a FROM a, b, c SET a.f1 = ... WHERE a.... = b.... AND a... = b....
zjcxc 2017-11-08
  • 打赏
  • 举报
回复
10000 条的更新,对于更新本身而言通常是不慢的,除非你的服务器不行,或者要更新的数据被其他锁住了 慢的通常是找数据上面,说就是说,如果你把 update 改写成 selct ,如果慢,那么 update 也慢,但如果你 select 没问题,update 则通常也不会有问题 update where 和 update where 主键 in (select 主键 where ) 通常是一样的,当然,也不完全确保,毕竟写法不一样,查询优化器分评估选择执行计划,这个执行计划有可能 不同
findshine 2017-11-08
  • 打赏
  • 举报
回复
引用 2 楼 zjcxc 的回复:
直接更新即可,UPDATE 既然你都会 IN 条件了,直接写条件有困难么?
update我知道,我是想问1000条的更新,1000条的更新相对IN岂不是慢了点,有没有比IN更快的sql写法或者其他
findshine 2017-11-08
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
为什么不直接更新 update tb set where xxx
假设有1000条符合条件,您这个岂不是要执行1000次,而IN只执行一次,难道不是IN效率更高么
zjcxc 2017-11-03
  • 打赏
  • 举报
回复
直接更新即可,UPDATE 既然你都会 IN 条件了,直接写条件有困难么?
rucypli 2017-11-03
  • 打赏
  • 举报
回复
为什么不直接更新 update tb set where xxx

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧