今天系统里面有一个的数据达到6770000条数据,需要删除大概400万条数据,
最先用的是delete删除,等了很久没有见到成功。
最后在网上找到的方法:
INSERT INTO t_copy SELECT * FROM t WHERE ... ; //把要删除大量数据的表中不需要删除的数据转存到另外一张表中,这里用了差不多2分钟
RENAME TABLE t TO t_old, t_copy TO t;//同时重明明两张表,间接实现数据删除操作
DROP TABLE t_old; //视情况而定吧,我清理数据是因为业务慢了,但是既然转存之后不会影响业务也就没删除转存出来的数据。
整个清理数据的过程我用了大概2分钟左右
还在原表中看见索引占了1.9G,可能表的索引添加有问题。
参考:http://www.cnblogs.com/imoing/p/3426324.html