减少查找重复记录查询执行时间

问题描述:

我有3个lac的记录。我需要统计重复的记录并返回所有重复的记录(例如,如果exam​​[email protected]是10次,然后返回所有10条记录的重复数为10)减少查找重复记录查询执行时间

我已经创建了查询,但需要15秒的时间。任何建议减少时间?

SELECT g.guest_name, g.email, b.totalCount AS duplicate_guest 
FROM guest g 
INNER JOIN (SELECT email, COUNT(Id) AS totalCount FROM guest GROUP BY email) b ON g.email = b.email 
+0

请加解释,并列出你在'guest'表有索引的输出。 – Shadow

需要通过添加条件如下面的查询,以减少对加盟条件的数据。

还要确保应该对电子邮件列的索引来优化它

SELECT g.guest_name, g.email, b.count as duplicate_guests 
FROM guest g 
INNER JOIN 
(
    SELECT email, COUNT(Id) AS count 
    FROM guest 
    GROUP BY email 
    HAVING count(*) > 1 
) b ON g.email = b.email 
+0

非常感谢,现在需要1.3秒 非常有用的建议**索引电子邮件** –

+0

欢迎您... –

只需添加HAVING count(*) > 1到内选择

SELECT g.guest_name, g.email, b.totalCount AS duplicate_guest 
FROM guest g 
INNER JOIN 
(
    SELECT email, COUNT(Id) AS totalCount 
    FROM guest 
    GROUP BY email 
    HAVING count(*) > 1 
) b ON g.email = b.email 
+0

谢谢,现在需要5秒 –