返回顶部
首页 > 问答 > 大数据 > mysql大批量替换字符串如何优化
0
已解决

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

  • 匿名发布
  • 2023-02-18
  • 发布在 问答/大数据
75

由于系统域名变化,需要修改 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 字段上加索引,然后又要修改该字段,反而会增加维护索引的时间。

还是找不到大批量替换字符串的语句优化方法。请各位大神帮忙看一下这种情况如何处理才能提高运行速度。


最佳答案

一张白纸-°

2023-02-19 01:33:32

1. 尽量避免使用replace语句,考虑使用update语句实现替换操作;

2. 尽量使用分片表进行更新字段操作;

3. 尽量使用存储过程,如果替换操作涉及多张表;

4. 尽量使用更多索引优化替换操作;

5. 尽量在单表上进行replace操作;

6. 尽量使用sql的替换函数,如replace、substring等;

7. 尽量在同一条sql语句中完成替换操作;

8. 尽量避免使用游标进行替换操作;

9. 尽量考虑使用instr函数进行替换操作;

10. 尽量考虑使用表达式实现替换操作;

其他回答3

雨打梨花深闭门ベ

2023-02-19

【MySQL大批量替换字符串优化】

1. 在开始替换之前,先使用SQL查询语句检查要替换的字符串的信息,以避免重复更新。

2. 如果字段是字符类型,考虑使用MySQL的REPLACE函数进行替换。

3. 使用MySQL的Update指令拼接字符串,可以大大提高替换效率。

4. 使用存储过程,将要替换的字符串存放在一个变量内,然后借助循环结构进行替换。

5. 如果要替换的字符串有很多重复的,可以考虑将替换字符串放入一个表中,然后使用join操作进行替换,提升替换效率。

6. 可以尝试使用Bulk Insert函数,将要替换的字符串放入一个更大的表格中,然后使用join操作进行替换。

7. 使用MySQL的SET函数,将要替换的字符串存放在一个变量中,然后用SET函数替换,提升替换效率。

丁国璐

2023-02-23

1、临时表替换:先创建一张临时表,把原表里面需要替换的字段值拷贝到临时表里,然后在临时表内进行替换操作,最后再把临时表里面更新后的字段值返回给原表。

2、使用 REPLACE 函数:MySQL 提供了 REPLACE 函数,可以用来替换目标字符串里面的指定字符。

3、使用 UPDATE 语句:用 UPDATE 语句进行大批量字符串替换,可以在 WHERE 条件部分根据需要筛选出需要替换的记录。

4、使用 LEFT JOIN 和 REPLACE 函数:可以通过 LEFT JOIN 语句先把目标字符串和一张空表关联起来,然后使用 REPLACE 函数进行替换。

5、使用 PHP 函数:可以使用 PHP 函数 str_replace() 和 preg_replace() 对 MySQL 数据库里的字段值进行替换。

换一个对的人

2023-05-11

可以使用MySQL的replace函数来批量替换字符串,同时使用事务和索引来优化操作速度。

  1. 在需要替换字符串的表上创建一个索引,例如:CREATE INDEX idx_replace ON table_name(column_name);

  2. 开启事务:START TRANSACTION;

  3. 使用replace函数进行批量替换,例如:UPDATE table_name SET column_name = REPLACE(column_name, "old_string", "new_string");

  4. 提交事务:COMMIT;

这样的操作可以大大减少替换字符串的时间,同时减少对表的锁定时间,提高系统的并发性能。

相关问题
0

价格

2

回答

75

浏览

匿名发布 2023-02-17提问
换一个对的人 2023-05-11 最后回答
可以使用MySQL的replace函数来批量替换字符串,同时使用事务和索引来优化操作速度。 在需要替换字符串的表上创建一个索引,例如:CREATE INDEX idx_replace ON table_name(column_name)
0

价格

2

回答

0

浏览

匿名发布 2023-05-09提问
2023-05-30 最后回答
0

价格

2

回答

0

浏览

匿名发布 2023-05-09提问
specter825 2023-05-19 最后回答
JavaScript 中的字符串拼接优化主要是为了提高字符串拼接的性能,避免频繁的内存分配和销毁操作,从而提高代码的执行效率。 具体的优化方式包括: 使用数组来拼接字符串,最后再通过 join 方法将数组转换成字符串,这样可以避免频繁的
0

价格

2

回答

0

浏览

匿名发布 2023-05-09提问
暮光染指,岁月倾城 2023-05-17 最后回答
在PHP中,字符串可以通过"."符号进行相加。 使用"."符号连接两个字符串,例如:$str1 = "Hello"; $str2 = "World"; $str3 = $str1 . $str2; 可以通过多次使用"."符号来连接多个
0

价格

2

回答

0

浏览

匿名发布 2023-05-09提问
ynwyl 2023-05-17 最后回答
在 PHP 中,可以使用 substr() 函数或者正则表达式来取字符串。 使用 substr() 函数来取字符串: substr(string $string, int $start, int|null $length = nu
0

价格

2

回答

3

浏览

匿名发布 2023-05-09提问
爱情=精神鸦P1anい 2023-05-16 最后回答
在PHP中,可以使用for循环或者foreach循环来遍历字符串。 使用for循环遍历字符串。 首先,使用strlen()函数获取字符串的长度。 然后,使用for循环从字符串的第一个字符开始遍历到最后一个字符。 在循环体内,使用字符
0

价格

2

回答

0

浏览

匿名发布 2023-05-09提问
happylisaliu 2023-05-16 最后回答
在PHP中,可以使用for循环或者foreach循环来遍历字符串。 使用for循环遍历字符串:$str = "Hello World"; $len = strlen($str); for($i=0; $i<$len; $i++){
0

价格

2

回答

2

浏览

匿名发布 2023-05-09提问
把酒临风 2023-05-15 最后回答
PHP可以使用explode函数来拆分字符串。 使用explode函数,将要拆分的字符串和分隔符作为参数传入,即可得到一个数组。 示例代码: $str = "Hello,World!"; $arr = explode(",", $st
0

价格

2

回答

1

浏览

匿名发布 2023-05-09提问
蓝雨熙 2023-05-15 最后回答
PHP可以使用explode函数来分割字符串。 使用explode函数,该函数需要传入两个参数,第一个参数是分隔符,第二个参数是要分割的字符串。 该函数返回一个数组,数组中的元素是根据分隔符分割后得到的子字符串。 例如,如果要以空格为分
0

价格

2

回答

2

浏览

匿名发布 2023-05-09提问
万地隆 2023-05-14 最后回答
在PHP中,可以使用“.”符号将字符串进行拼接,从而实现字符串的累加。 定义一个字符串变量,用于存储累加后的结果。 使用“.”符号将需要累加的字符串拼接到该变量中。 重复步骤2,直到完成所有字符串的累加。 最终,该变量中存储的即为累加后
相关文章
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作