mysql大批量替换字符串如何优化

由于系统域名变化,需要修改mysql数据库中的多个表的字段中的域名。
数据量特别大,首先表很多大概300+;其次每个表中的数据大约是50万条左右。找不到大批量替换字符串的语句优化方法。
目前我查到是mysql替换字符串语句为:

update test_table.content
set content= replace(content,'domain_name','domain_name_new');

但是这样直接执行速度特别慢,没有where条件也不好添加索引来提高效率。
就算是用content字段作为where条件来筛选修改范围,就会变成:

update test_table.content
set content= replace(content,'domain_name','domain_name_new')
where content like '%domain_name%';

首先like“%xxx”,无法使用索引。在这个content字段上加索引,然后又要修改该字段,反而会增加维护索引的时间。
还是找不到大批量替换字符串的语句优化方法。请各位大神帮忙看一下这种情况如何处理才能提高运行速度。

讨论数量: 6

新建一个临表或者新建一个临时字段. 变更后然后替换回来

1年前 评论
weiwei_sun (楼主) 1年前
╰ゝSakura

在数据库中存储域名本身就是个不合理的做法,建议改掉,要么就是在取数据的时候,通过个方法统一做替换

1年前 评论

有一个笨方法。 where id >0 and id < 10000 where id >10000 and id <=20000 自己写一个python 程序,每次执行完 sleep 停顿5秒,不停的循环执行。通过id更新效率很快。

1年前 评论

:joy: 我以前都是导出sql文件,然后用sublimetext打开 替换的

1年前 评论
bishi123 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!