PostgreSQL删除清空表,truncate、delete、drop

主题:删除表时,如果要释放空间,需要使用TRUNCATE。

一、TRUNCATE

语法:TRUNCATE TABLE table_name;

示例:

sql 复制代码
TRUNCATE TABLE gd_4528_2020 

二、delete和drop

sql 复制代码
delete from dltb_350623_2021 where id<>158
sql 复制代码
DROP TABLE demo_contacts

三、三者比较

1、TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

使用TRUNCATE删除后,postgre的占用空间将被释放:

2、truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。

3、truncate只能作用于表;delete,drop可作用于表、视图等。

4、truncate会清空表中的所有行,且不能带where,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。

5、truncate会重置表的自增值;delete不会。

6、truncate不会激活与表有关的删除触发器;delete可以。

7、truncate后会使表和索引所占用的空间会恢复到初始大小;delete操作不会减少表或索引所占用的空间,drop语句将表所占用的空间全释放掉。

相关推荐
柠檬汁Dev9 分钟前
还在等DBA给你库?我3分钟就拉起一个高可用集群
数据库·云计算·dba
安卓开发者16 分钟前
鸿蒙NEXT应用数据持久化全面解析:从用户首选项到分布式数据库
数据库·分布式·harmonyos
少男的脸红藏不住心事1 小时前
GD32入门到实战35--485实现OTA
数据库·mongodb·nosql
爬山算法2 小时前
Redis(50) Redis哨兵如何与客户端进行交互?
数据库·redis·交互
007php0072 小时前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang
YS_Geo2 小时前
Redis 深度解析:数据结构、持久化与集群
数据结构·数据库·redis
IvanCodes2 小时前
六、Docker 核心技术:Dockerfile 指令详解
java·数据库·docker
寻星探路2 小时前
数据结构造神计划第三天---数据类型
数据库
l5657583 小时前
第五十五天(SQL注入&增删改查&HTTP头&UA&XFF&Referer&Cookie&无回显报错&复盘)
数据库
上海达策TECHSONIC3 小时前
经验分享:如何让SAP B1数据库性能提升50%
运维·数据库·运维开发