最新消息:

mysql 删除表中的重复记录

数据库 admin 1浏览

MySQL中漏掉了40%左右的数据,寻找这个错误的代价是花了三天,将所有的代码重新检查了一遍,由于代码不是我写的,看得晕头转向,上苍保佑,我还不算太笨,最终找到了原因,不过接着就碰到另外一个问题,找回的数据中存在重复,而且在无法在重复的健上建立唯一,于是我想了一个最笨的方法

SELECT * FROM sub_new WHERE email IN (
SELECT email FROM sub_new
GROUP BY email HAVING count(email) > 1
)

这种算法是最傻也是最没出息的算法,在数量在1W的时候还可以接受,到10W就要两分钟了,到50W就死在那里了,所以告诫那些跟我一样天资不算聪明的人,数据量比较大的时候千万别用这种方法,这种类似冒泡排序的算法复杂度是O(n^2),如果你有10W条记录,你自己乘一下吧

接着又想了另外一个方法,虽然机械了点,不过效率非常之高,分三步走:

CREATE TABLE tmp AS SELECT * FROM youtable
GROUP BY name

DROP TABLE youtable
ALTER TABLE tmp RENAME youtable

10W条记录,在第一步处理师大约为4秒,50w条记录时为19秒左右,再往上就没测了

后面两条语句纯粹是体力活,如果你用的是phpadmin,点点鼠标就可以搞定

相关日志升级最新 Nginx Mysql Php
mysql分页limit 优化
mysql 在线安装sphinx存储引擎
mysql Unknown command ”’.
mysql 5.5.9 编译安装

转载请注明:爱开源 » mysql 删除表中的重复记录