SQL查重并删除电脑cpu直达100%

只为思考 重庆市步联科技 软件工程师  2015-09-18 09:57:37
语法如下:

delete from Q_qq where ID not in(select min(ID) from Q_qq group by Qno having count(Qno)>=1)


数据库 【该表数据已经 20W 了】 :



这个怎么优化呢?服务器直接卡爆了

同时,多条件的去重对cpu几乎没有影响,语法如下:

delete tmp from( select row_num = row_number() over(partition by Qno,Qqno order by Qtime asc) from Q_qun where Qtime>getdate()-1) tmp where row_num > 1 


数据库 【该表数据已经接近24W了】 :





...全文
76 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
只为思考 2015-09-20
引用 3 楼 yupeigu 的回复:
改成这种关联的方式试试:
代码没显示出来哦
回复
改成这种关联的方式试试:
回复
只为思考 2015-09-18
引用 1 楼 Tiger_Zhao 的回复:
先在(Qno,ID)上建联合索引
delete from Q_qq
 where EXISTS (SELECT *
                 FROM Q_qq t
                WHERE t.Qno = Q_qq.Qno
                  AND t.ID < Q_qq.ID)
谢啦,CPU瞬间下来了,我这数据库用的还是不怎么地啊,现在开发东西很多数据库语法都不用,忘得差不多了。
回复
Tiger_Zhao 2015-09-18
先在(Qno,ID)上建联合索引
delete from Q_qq
where EXISTS (SELECT *
FROM Q_qq t
WHERE t.Qno = Q_qq.Qno
AND t.ID < Q_qq.ID)

回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-09-18 09:57
社区公告
暂无公告