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后进行记录。

相关推荐
卜及中35 分钟前
【Redis/2】核心特性、应用场景与安装配置
数据库·redis·缓存
LucianaiB1 小时前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
Eiceblue1 小时前
Python读取PDF:文本、图片与文档属性
数据库·python·pdf
在未来等你3 小时前
SQL进阶之旅 Day 21:临时表与内存表应用
sql·mysql·postgresql·database·temporary-table·memory-table·sql-optimization
敖云岚4 小时前
【Redis】分布式锁的介绍与演进之路
数据库·redis·分布式
LUCIAZZZ4 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
我在北京coding5 小时前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
小Tomkk5 小时前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云
明月醉窗台6 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt
沉到海底去吧Go6 小时前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名