我有一个表格,其中有一列包含这样的值 - [“12”]。该表中有2800万条记录。当我执行下面的操作时,它会花费很长时间,最终只会出错。我收到此消息 - “第1行错误1206(HY000):锁定总数超过锁定表大小”
这是更新声明:
update table set category_ids = REPLACE(REPLACE(category_ids,'"]',''),'["','');
基本上,只是尝试从该列中的值中删除[“和”]。
有更有效/更好的方法吗?
答案 0 :(得分:1)
我没有测试过这个,只是猜测。
选择有限行进行更新,然后进行更新。
select * from my_table where col like '[%]' limit 0, 100000 for update;
update my_table set col=replace(.... where ... limit 100000;
在下一次迭代中你可以试试
select * from my_table where col like '[%]' limit 100001, 100000 for update;
update my_table set col=replace(.... where ... limit 100000;
这种做法可以控制允许的锁数。