首页 新闻 赞助 找找看

MYSQL多对多关系的表怎样写更新SQL?

0
悬赏园豆:30 [已解决问题] 解决于 2021-01-10 19:33

MYSQL里,两个表 t1和t2,分别有字段 t1:c1,c2,c3,t2:c11,c12,c13,t1.c2=t2.c13,现在要更新t1.c2=t2.c11,两个表的数据都很多,t1有30W条左右,t2有10W条左右,我现在这样子写:
UPDATE t1 SET t1.c2=(SELECT t2.c11 FROM t2 WHERE (t2.c13=t1.t2) ) ,半小时了还在执行,请一个优化的方法。

侯唯的主页 侯唯 | 菜鸟二级 | 园豆:225
提问于:2020-11-25 13:09
< >
分享
最佳答案
1

问题的关键是 1)多对多,2)而你又要更新这个多对多的键; 这说明,你本身的数据逻辑对应就混乱。
假定你认为数据逻辑没问题可以这么更新。
剩下的就是你1个update语句执行的问题了, 会:1)这个内部结果集会很大,占用资源 ,2)内部索引的锁定、更新、多次更新问题。

所以,可以这么解决:
update t1
set c2=(select min(c11) from t2 where c13=t1.c2) ---假定你的数据逻辑对应没有问题

收获园豆:30
jinzhenshui | 菜鸟二级 |园豆:383 | 2020-11-25 15:06
其他回答(2)
0

写个小程序更新数据,慢慢跑

jqw2009 | 园豆:2439 (老鸟四级) | 2020-11-25 13:29
0

Update t1
inner join t2 on t2.c13=t1.t2
set t1.c2=t2.c11
试下这种,两个表关联字段键索引。

geass.. | 园豆:1821 (小虾三级) | 2020-11-25 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册