麻烦大家了,请教一个mysql 问题,我这里有一个表 ,单表已经有100多万条数据,我要对其中的10万条做更新操作,非常慢 93分钟了,小菜鸟一枚,请问大家怎么可以提高更新速度
麻烦大家了,请教一个mysql 问题,我这里有一个表 ,单表已经有100多万条数据,我要对其中的10万条做更新操作,非常慢 93分钟了,小菜鸟一枚,请问大家怎么可以提高更新速度
replace into table(id,publish_date) values (221,'2026'),(2,'2026'),...(x,'2026');
publish_date
上有索引吧,解决办法:删除索引,更新完之后重建索引。id
上没有索引(不太可能吧),解决办法:在 id
上创建索引。AUTO_COMMIT
之类的开关?解决办法:不要用 AUTO_COMMIT
, 自己分组,比如 100 条为一组,用 begin;
commit;
来控制事务。用mysql自带的批量更新会快很多。测试20万条数据,也就是两分半钟。
UPDATE tableName
SET orderId = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
先给 publish_date 分组 将同一个日期的 Id 汇总到一起
这样你的sql数量将会大大减少
优化之后会是类似这样
update yamaxunnew set publish_date = '2016年1月1日' where id in (1182323,1182324,...)