delete from tbl_survey where n_id not in (select max(n_id) from tbl_survey group by n_human_id)
n_id是主键,n_human_id是人的编码,数字类型,表中有重复,已经建了normal索引。
表中一共60000多条数据,其中n_human_id重复的大概30000条。
这个查询运行了10多分钟都没有出结果,如果我强制加上n_id<10000这样的限制的话,即使只是删除2000条数据,大概也要跑5分钟左右。
实在不知道问题出在哪里?数据库服务器性能没有问题,cpu和内存都在50%以下。
------解决方案--------------------
--一个表只判断一列重复 现在是empno重复--最高效----
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
------解决方案--------------------
delete * from tbl_survey t1 where where t1.n_id!=
(select max(n_id) from tbl_survey t2
where t1.n_human_id=t2.n_human_id)
不要用group by