您的位置:首页 > 数据库 > MySQL

mysql表删除重复记录方法总结及效率对比

2014-04-25 20:12 495 查看
下面这些方法在我虚拟机上做的测试,内存384M,交换分区1024M, test共300W数据,重复记录3.5W,需求如题目所示,表结构如下:
现有记录:
想去掉name重名的记录,方法如下:
1.给name字段修改成唯一索引:
这样当向表中添加相同记录的时候,会返回1062的添加失败信息。
但是有一种情况是表中已经有n个重复的记录,这时候我们才想起来要添加唯一索引,再执行上面的操作时,数据库会告诉你已经有重复的记录了,建立索引失败,这时候,我们可以用下面的操作:
它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化。
2.重建表方法一:
创建另外一个表,为了防止原来的表结构丢失,可以先创建一个这样的”临时表”,
从test表中查找数据,添加到uniq_test中:
3.删除重复记录法:
创建一个表用来存放,要删除的记录的id信息:
如果要删除的记录不多的话,可以把这个表创建成内存表形式:
然后在test表中删除重复记录:
4.效率低下方法
总结:
第一种方法历史22分钟,系统负载5左右;
第二种方法效率非常低下,把未知索引文件破坏,终止执行
第三种方法历时17分钟,其中
历时15分钟,删除动作历时2分钟,系统负载3左右
第四种方法,执行过程中,把它test的索引文件都破坏了,可见”威力”之大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: