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语句将表所占用的空间全释放掉。

相关推荐
醉风塘4 小时前
JDBC批量操作终极指南:PreparedStatement批处理与事务性能优化实战
数据库·性能优化
2401_838472514 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
invicinble4 小时前
对于mysql层对sql层面的知识体系的理解和把握
数据库·sql·mysql
2301_790300964 小时前
用Matplotlib绘制专业图表:从基础到高级
jvm·数据库·python
DFT计算杂谈5 小时前
VASP+PHONOPY+pypolymlpj计算不同温度下声子谱,附批处理脚本
java·前端·数据库·人工智能·python
数据知道5 小时前
PostgreSQL核心原理:为什么数据库偶尔会卡顿?
数据库·postgresql
Nandeska5 小时前
14、MySQL基于GTID的数据同步
数据库·mysql
Mr_Xuhhh5 小时前
MySQL表的内连接与外连接详解
java·前端·数据库
l1t5 小时前
DeepSeek辅助总结postgresql wiki提供的数独求解器
数据库·sql·postgresql