SQL清空表(高效)

一般情况下我们需要清空表用到delete,但是delete是一条一条数据来删除的,直到表清空,但是遇到数据量大的时候差距就很明显了,耗时久。

当然有更好的办法,删除表数据但保留表结构使用truncate更快速也更安全。

MySQL

在MySQL中一般我们清空表会用

delete from tablename

建议用另外一种方式

TRUNCATE table_name;

数据表会清空,而且自增id也会变回0;

PostgreSQL

但是在PG中,需要加一步操作因为postgresql中是通过序列来进行id自增的。

先清表(tablename 换成你的表名)前提你这张表没有多余关联关系时

truncate table tablename;

表中有外键时,要用级联方式删所有关联的数据

truncate table tablename cascade;

再设置序列起始值为1(tablename_id_seq 换成你的对应序列名字)

alter sequence tablename_id_seq start 1;

两条sql都要·执行,例

<delete id="deleteAll">
    truncate table tablename;
</delete>
<update id="resSequence">
    alter sequence tablename_id_seq restart with 1;
</update>

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值