如何在大表中找到具有重复字段的行?

时间:2013-08-18 01:44:09

标签: mysql duplicates bigtable

我有一个包含1.5M +行的表,用于记录来自网站的下载,该网站的电子邮件地址是已下载的内容。我想找到那些下载次数超过100次的人。这是我测试过的,但是当我在服务器上测试它时query-time超过11秒!你知道更快的方式吗?

SELECT  `email`
FROM  `table_of_downloads` 
GROUP BY  `email` 
HAVING COUNT( * ) >100

以下是按要求提供的EXPLAIN结果:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  table_of_downloads  ALL NULL    NULL    NULL    NULL    1656546 Using temporary; Using filesort

2 个答案:

答案 0 :(得分:0)

您需要在email列上添加索引。否则,查询必须扫描整个表以计算每封电子邮件的行数。除了索引之外,没有办法让它更快。

答案 1 :(得分:0)

让其他人知道,我只是将类型从tinytext更改为varchar(128),查询时间缩短为0.03秒。