好的,我在一个表中有超过200万个电话号码,我需要从电话字段中删除所有空格。MYSQL:在2百万条记录上更新替换
我INDEX手机领域,优化表,但仍当我运行下面的查询它是如此缓慢,永远需要 - 事实上我仍然在等待和30分钟有过去
UPDATE ACTNSW SET phone = REPLACE(phone, ' ', '');
我需要知道是否有加速这一过程,以便它不需要那么长时间。它使用
数据库scheeme是InnoDB
服务器版本:5.5.31-1(Debian的)
好的,我在一个表中有超过200万个电话号码,我需要从电话字段中删除所有空格。MYSQL:在2百万条记录上更新替换
我INDEX手机领域,优化表,但仍当我运行下面的查询它是如此缓慢,永远需要 - 事实上我仍然在等待和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
....
我认为它会帮助你。
如果您有可能在离线状态下进行更新,则可以使用mysqldump输出表格的内容。接下来用sed/awk对文件执行替换操作。然后将您的表放到服务器上并使用转储文件恢复它。
既然这是一次性操作,那么重要吗? – eggyal