【发布时间】:2022-11-18 02:50:01
【问题描述】:
我有一个包含三个字段的表。第一个字段 - 具有 varchar 数据类型 - 是客户的号码 (c_number),其他两个也是 varchar - 客户的名字和姓氏(c_first_name 和 c_last_name)。
该表没有单独的主键。但是有相同c_number字段的重复项(例如,对于相同的客户,但是名字和姓氏写在不同的寄存器中)
表中的记录数相当大——大约一百万。
需要显示所有重复次数大于N次的客户。
这是正面解决问题的代码:
Select *
COUNT(c_number) as c
GROUP BY c_number
HAVING (c > N) ;
但是这种方法似乎很慢。我的解决方案是添加索引:
CREATE INDEX idx_c_number
ON TABLENAME(c_number);
之后,如果我理解正确,就可以执行表达式来实时搜索重复项。 如果仍然不是这种情况,请告诉我找到具有最佳性能的重复项的最佳解决方案(记住我们仍然没有主键这一事实)
【问题讨论】:
标签: sql postgresql duplicates