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

Posted qidakang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql千万级数据量查询出所有重复的记录相关的知识,希望对你有一定的参考价值。

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

有些情况直接使用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;

 

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接

以上是关于mysql千万级数据量查询出所有重复的记录的主要内容,如果未能解决你的问题,请参考以下文章

mysql为啥千万级别查询比1000条数据的查询慢

MySQL 百万级/千万级表 总记录数查询

求教,mysql千万级数据多表查询做分页该如何优化

MySQL删除千万级数据量导致的慢查询优化

MySQL 百万级/千万级表 全量更新

Mysql千万级大数据量查询优化