postgresql - 从 Postgresql 中的大表中删除重复项
问题描述
我有一个不寻常的问题:我需要从 Postgresql 的表中删除重复记录。因为我有重复的记录,所以我在这个表中没有主键和唯一索引。该表包含 2000 万条记录,其中包含重复记录。当我尝试下面的查询时,它需要很长时间。
'使用 temp b 从 temp a 中删除,其中 a.recordid=b.recordid 和 a.ctid < b.ctid;'
那么处理这么大的没有索引的表应该有什么更好的方法呢?感谢您的帮助。
解决方案
如果你有足够的空间,你可以复制没有重复的表,然后删除旧表并重命名新表
像这样
INSERT INTO new_table
VALUES
SELECT
DISTINCT ON (column)
*
FROM old_table
ORDER BY column ASC
推荐阅读
- c# - 用镜子制作多人多人纸牌游戏
- python - 如何在安装 chatterBot 时修复错误?
- json - 为具有许多键的 JSON 对象进行 hamcrest 断言的最有效方法是什么?
- ios - iOS Flutter-如何调整字符串表情符号的大小?
- c++ - Boost 状态图在使用模板状态时无法编译
- c - C - 使用指针和结构练习 - 获取带空格的字符串
- node.js - 尝试在插件 serverless-reqvalidator-plugin 上脱机运行无服务器时出错
- python - 有没有办法使用机器人或 Python 代码从 JSON 数组中获取特定值?
- javascript - 网络传输速度慢到网页 PHP
- python - 如何更改 Visual Code 终端中的输出颜色?