PostgreSQL - 获得重复的最快方法

时间:2018-06-11 20:20:53

标签: sql postgresql duplicates

需要通过给定的字段名称快速查找表中的重复项。

我有下面的查询,但即使我把索引放在表格字段上,它仍会运行1.5分钟。

select * from (
  SELECT *,
  ROW_NUMBER() OVER(PARTITION BY b.name) AS rowCount
  FROM table b
) a
where a.rowCount > 1

3 个答案:

答案 0 :(得分:1)

你可以这样做:

select name, count(*)
from table 
group by name
having count(*) > 1;

答案 1 :(得分:0)

试试这个

select name, min(id), count(id)
from table
group by name
where count(id) > 1

如果您将名称列编入索引,这将会快得多。

答案 2 :(得分:0)

除了select子句中的name之外,您可以直接获取重复的名称而不需要任何额外的列。

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