码迷,mamicode.com
首页 > 数据库 > 详细

mysql千万级数据量查询出所有重复的记录

时间:2020-03-17 08:06:56      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:weixin   com   数据   tps   创建   存在   count   重复   字符   

查询重复的字段需要创建索引,多个条件则创建组合索引,各个条件的索引都存在则不必须创建组合索引

有些情况直接使用GROUP BY HAVING则能直接解决;但是有些情况下查询缓慢,则需要使用下面其他的方法

以下是本人整理出来的查询重复数据的SQL,适用于千万级数据量的MYSQL数据库。

 

 

1.适用于整数类型的

SELECT DISTINCT UId FROM vehicle WHERE 1=1 GROUP BY UId HAVING(COUNT(UId))>1;

  


2.分组排序

SELECT UId FROM 
(
SELECT UId,LicenseNo,IF(@grp=a.UId,@rank:=@rank+1,@rank:=1) rank,@grp:=a.UId FROM 
(SELECT UId,LicenseNo FROM vehicle WHERE 1=1 ORDER BY UId) AS a,(SELECT @grp:=0,@rank:=0) AS b
)AS t
WHERE t.rank=2;

  


3.适用于字符串类型,包含中文

SELECT DISTINCT(LicenseNo) FROM vehicle a WHERE 1 = 1 AND ((SELECT COUNT(LicenseNo) FROM vehicle WHERE LicenseNo = a.LicenseNo) > 1) ;

  


4.适用于字符串类型,不包含中文

SELECT DISTINCT (a.CarVIN) FROM vehicle a LEFT JOIN vehicle b ON a.CarVIN=b.CarVIN WHERE 1=1 AND a.id<>b.Id;

  

 

转载 https://mp.weixin.qq.com/s/U5nZ0Ss_oJ3W1CgF3SvtBQ

mysql千万级数据量查询出所有重复的记录

标签:weixin   com   数据   tps   创建   存在   count   重复   字符   

原文地址:https://www.cnblogs.com/kaifayuan/p/12508301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!