mysql中数据去重和优化
更改表user_info的主键uid为自增的id后,忘了设置原来主键uid属性为unique,结果导致产生uid重复的记录。为此需要清理后来插入的重复记录。 基本方法可以参考后面的附上的资料,但是由于mysql不支持同时对一个表进行操作,即子查询和要进行的操作不能是同一个表,因此需要通过零时表中转一下。 写在前面:数据量大时,一定要多涉及的关键字段创建索引!!!否则很慢很慢很慢,慢到想死的心都有了 1 单字段重复 生成零时表,其中uid是需要去重的字段 create table tmp_uid as (select uid from user_info group by uid having count(uid)) create table tmp_id as (select min(id) from user_info group by uid having count(uid)) 数据量大时一定要为uid创建索引 create index index_uid on tmp_uid create index index_id on tmp_id 删除多余的重复记录,保留重复项中id最小的 delete from user_info where id not in (select id from tmp_id) and uid in (select uid from tmp_uid