Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL:更新并替换200万条记录_Mysql - Fatal编程技术网

MYSQL:更新并替换200万条记录

MYSQL:更新并替换200万条记录,mysql,Mysql,好的,我在一个表中有超过200万个电话号码,我需要删除电话字段中的所有空格 我已经索引了电话字段并优化了表,但是当我运行下面的查询时,它仍然非常慢,而且需要花费很长时间——事实上,我仍然在等待,30分钟已经过去了 UPDATE ACTNSW SET phone = REPLACE(phone, ' ', ''); 我需要知道是否有办法加快这一进程,这样就不会花那么长时间 它使用的数据库scheeme是InnoDB 服务器版本:5.5.31-1(Debian)这是基本的sql查询。对此您无能为力

好的,我在一个表中有超过200万个电话号码,我需要删除电话字段中的所有空格

我已经索引了电话字段并优化了表,但是当我运行下面的查询时,它仍然非常慢,而且需要花费很长时间——事实上,我仍然在等待,30分钟已经过去了

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '');
我需要知道是否有办法加快这一进程,这样就不会花那么长时间

它使用的数据库scheeme是
InnoDB

服务器版本:5.5.31-1(Debian)

这是基本的sql查询。对此您无能为力,但您可以做一件事:不要运行更新
查询整个表。进行多个更新查询,如

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .4 milian and id > .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id > .5 milian and id > .4 milian
....
UPDATE ACTNSW SET phone=REPLACE(电话,,''),其中id<.2 milian
更新ACTNSW SET phone=替换(电话,,''),其中id<0.4百万和id>0.2百万
更新ACTNSW SET phone=替换(电话,,''),其中id>0.5百万和id>0.4百万
....

我想这会对你有帮助

这是基本的sql查询。对此您无能为力,但您可以做一件事:不要运行更新
查询整个表。进行多个更新查询,如

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id < .4 milian and id > .2 milian
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '') where id > .5 milian and id > .4 milian
....
UPDATE ACTNSW SET phone=REPLACE(电话,,''),其中id<.2 milian
更新ACTNSW SET phone=替换(电话,,''),其中id<0.4百万和id>0.2百万
更新ACTNSW SET phone=替换(电话,,''),其中id>0.5百万和id>0.4百万
....

我想这会对你有帮助

如果可以脱机执行更新,可以使用输出表的内容。接下来,使用sed/awk对文件执行替换操作。然后将表放到服务器上,并用转储文件还原它。

如果可以脱机进行更新,可以使用输出表的内容。接下来,使用sed/awk对文件执行替换操作。然后将表放在服务器上,并用转储文件还原它。

因为这是一次操作,这有关系吗?因为这是一次操作,这有关系吗?关键是如果您中断,那么每次占用的内存会更少。所以它会正常运行。我不明白为什么内存使用会有实质性的不同。关键是如果你中断了,那么每次占用的内存会更少。所以它会正常运行。我不明白为什么内存使用会有实质性的不同。