美文网首页
Postgres批量删除数据

Postgres批量删除数据

作者: 5b826301f7f6 | 来源:发表于2019-01-28 17:19 被阅读0次

当需要对一些不需要的历史数据进行大批量删除时, 在使用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

相关文章

  • Postgres批量删除数据

    当需要对一些不需要的历史数据进行大批量删除时, 在使用delete语句时,会发现在删除一些数据时会非常慢 比如 D...

  • 2019-07-21

    #将指定数据信息找出来,批量复制数据信息到指定目录/删除数据 批量删除数据命令: find /oldboy...

  • mybatis批量插入,control中传入参数为

    关于mybatis批量问题,见之前文章mybatis批量插入、批量更新和批量删除mybatis批量新增,插入的数据...

  • redis使用技巧

    批量删除Keys 指定数据库删除Keys 远程批量删除Keys 动态查看redis连接数 找出比较大的Key

  • mybatis批量插入、批量更新和批量删除

    MyBatis批量插入数据[Mybatis 插入与批量插入以及多参数批量删除](http://www.cnblog...

  • Mybatis-Plus删除操作以及实现逻辑删除

    1、根据id删除记录 2、批量删除 3、简单的条件查询删除 4、逻辑删除 物理删除:真实删除,将对应数据从数据库中...

  • yii2 GridView常见操作

    批量删除常见操作列表页直接修改数据

  • Django-16 ORM 删除操作

    单个数据删除 1,查找查询结果对应的一个数据对象2,调用这个数据对象的delete()方法实现删除 批量删除 1,...

  • PostgreSQL

    1. 安装 数据库 图形界面 2. 命令 初次启动方式切换用户 SHELL 操作 登录数据库 删除PostgreS...

  • Mysql 一些实用方法笔记!

    sql 注入: sql 导入数据: 批量插入数据: sql 关联更新多表数据: sql 关联删除多表数据: mys...

网友评论

      本文标题:Postgres批量删除数据

      本文链接:https://www.haomeiwen.com/subject/iznajqtx.html