0

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

我有 INDEX 电话字段并优化了表格但是当我运行以下查询时它仍然很慢并且需要很长时间 - 事实上我仍在等待并且 30 分钟过去了

UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '');

我需要知道是否有办法加快这个过程,这样就不会花这么长时间。

它使用的数据库方案是InnoDB 服务器版本:5.5.31-1 (Debian)

4

2 回答 2

2

这是基本的 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
....

我想它会帮助你。

于 2013-07-11T08:33:17.107 回答
1

如果您有可能进行离线更新,您可以使用mysqldump输出表的内容。接下来使用 sed/awk 对文件执行替换操作。然后将您的表放在服务器上并使用转储文件恢复它。

于 2013-07-11T08:46:13.297 回答