MySQL 清空表 截断表

清空表:delete from users;

清空表只是清空表中的逻辑数据,但是物理数据不清除,如主键值、索引等不被清除,还是原来的值。

截断表:truncate table users;

截断表可以用于删除表中 的所有数据。截断表命令还会回收所有索引的分配页。截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。 delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的 拥有者可以截断表。

另外,truncate表之后,如果有自动主键的话,会恢复成默认值。

主要区别如下:

truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。

truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。

truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。

而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。

相关推荐
Run Freely9372 分钟前
MySQL 数据库_01
数据库·mysql
小朋友,你是否有很多问号?10 分钟前
mac本地安装mysql
数据库·mysql
斯普信专业组29 分钟前
MySQL主从同步参数调优案例
mysql·主从
lucky_lyovo1 小时前
Neo4j--登录及简单操作
数据库·neo4j
影子24011 小时前
java jdbc连接sqlserver2008R2版本数据库报错,驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
java·数据库·ssl
0_0梅伊阁诗人1 小时前
Django ORM 模型
开发语言·数据库·笔记·python·oracle·django
倔强的石头1062 小时前
Windows系统下KingbaseES数据库保姆级安装教程(附常见问题解决)
数据库·windows
躲在云朵里`2 小时前
Redis深度解析:核心数据结构、线程模型与高频面试题
数据结构·数据库·redis
m0_453806872 小时前
【已解决】mongoose在mongodb中添加数据,数据库默认复数问题
数据库·mongodb
非凡ghost2 小时前
AOMEI Partition Assistant磁盘分区工具:磁盘管理的得力助手
linux·运维·前端·数据库·学习·生活·软件需求