PostgreSQL批量删除数据-阿里云开发者社区

开发者社区> 彼岸花2012s> 正文

PostgreSQL批量删除数据

简介: 当需要对一些不需要的历史数据进行大批量删除时, 在使用delete语句时,会发现在删除一些数据时会非常慢 比如 DELETE FROM test where id < 10000; 删除缓慢的原因主要在于外键约束,当数据库在有约束的情况下,无论进行删除或者更新操作, 都会对相关表进行一个校验,判断相关表的相关记录是否被删除或者更新。 这个检查的过程会非常慢, 尤其在外建表又关联着外建表的这种层层嵌套的情况下。
+关注继续查看

解决方法:

ALTER TABLE test DISABLE TRIGGER ALL;

这样就会发现,删除的速度会大幅度上升, 之前对于操作过的嵌套表删除时,从几十分钟到1分钟以内,瞬间提速很多。

在删除完数据后, 一定要记得把trigger改回来, 调用:

ALTER TABLE test ENABLE TRIGGER ALL;

在删除完数据后,再重新对物理表进行一个优化

1.  使用vacuum(维护数据库磁盘的工具)删除那些已经被标记为删除的数据,并释放空间。但是vacuum工具不能对相应的索引进行清理,所以需要第二步重建索引

vacuum FULL test

2. 重新建立索引提高查询效率

REINDEX TABLE test


快速清表

TRUNCATE TABLE sup_action_single;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL SERVER数据库删除LOG文件和清空日志的方案
原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。
4184 0
从 OSS 装载数据到 PostgreSQL
oss_fdw 在阿里云上,支持通过 oss_fdw 并行装载数据到 PostgreSQL 和 PPAS 中 oss_fdw 参数 oss_fdw 和其他 fdw 的接口一样,提供对外部数据源 oss 的数据封装,用户可以使用 oss_fdw 像一张表一样读取 oss 上的存放的文件。 和其
3460 0
数据库批量删除
案例 same.png 语句 查找相同的数据 SELECT * FROM Test.dbo.test a WHERE EXISTS ( SELECT * FROM Test.
853 0
6
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载