首页 > 解决方案 > 从 Postgresql 中的大表中删除重复项

问题描述

我有一个不寻常的问题:我需要从 Postgresql 的表中删除重复记录。因为我有重复的记录,所以我在这个表中没有主键和唯一索引。该表包含 2000 万条记录,其中包含重复记录。当我尝试下面的查询时,它需要很长时间。

'使用 temp b 从 temp a 中删除,其中 a.recordid=b.recordid 和 a.ctid < b.ctid;'

那么处理这么大的没有索引的表应该有什么更好的方法呢?感谢您的帮助。

标签: postgresqlindexingdelete-row

解决方案


如果你有足够的空间,你可以复制没有重复的表,然后删除旧表并重命名新表

像这样

INSERT INTO new_table
VALUES
SELECT 
  DISTINCT ON (column) 
  *
FROM old_table
ORDER BY column ASC

推荐阅读