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了】 :





...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
只为思考 2015-09-20
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
改成这种关联的方式试试:
代码没显示出来哦
LongRui888 2015-09-18
  • 打赏
  • 举报
回复
改成这种关联的方式试试:
只为思考 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)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧