优化sql查询以查找列中的非唯一值的数量

时间:2013-03-01 14:50:10

标签: mysql sql

有没有人知道如何优化下面的查询,因为它需要相当长的时间:

select count(*) from 
(select field1
from table
group by field1
having count(distinct field1) <> count(field1)) AS Q1

该查询用于查找列中非唯一值的数量。

2 个答案:

答案 0 :(得分:3)

如果您想要非唯一值的数量,请使用:

select count(*)
from (select field1
      from table
       group by field1
       having count(*) > 1
      ) t

而且,是的,table.field1上的索引会加快这一速度。

如果您想要这些值,请使用:

select field1
from table
group by field1
having count(*) > 1

答案 1 :(得分:2)

INDEX列上添加field1,例如

ALTER TABLE tableNAME ADD INDEX (field1)