主题:删除表时,如果要释放空间,需要使用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语句将表所占用的空间全释放掉。