快速删除mysql表中所有数据-TRUNCATE TABLE

文章目录


前言

在 MySQL 中,TRUNCATE TABLE 是一种用于快速清空表数据的命令,属于 DDL(数据定义语言) 操作,而不是 DML(数据操作语言)。它的执行效率通常比 DELETE 更高,因为它不是逐行删除,而是直接释放数据页并重新创建表结构。

用法

语法结构:

sql 复制代码
TRUNCATE TABLE table_name;

当我们需要将大数据量的数据库表中所有数据全部删除时,此时如果使用delete执行时间会非常慢,使用TRUNCATE TABLE table_name命令快速清空数据库表

与DELETE的区别

  • DELETE:属于 DML(数据操纵语言),是有条件的删除数据行,本质是 "逐行删除",可以通过 WHERE 子句指定删除范围,也可以不加 WHERE 删除全表数据。
  • TRUNCATE TABLE:属于 DDL(数据定义语言),是清空整张表,本质是 "重置表"------ 它会删除表中所有数据,重置自增列(如 AUTO_INCREMENT),并释放数据占用的存储空间。

适用场景

用 DELETE:

  1. 需要删除部分数据(如删除某个用户的记录);
  2. 需要触发删除触发器;
  3. 操作后可能需要回滚(如事务内操作)。

用 TRUNCATE TABLE:

  1. 需要快速清空整张表(如测试环境重置数据);
  2. 需要重置自增列;
  3. 对执行效率要求高(数据量越大,TRUNCATE 优势越明显)。

总结

DELETE 是逐行删除,可带 WHERE 条件,支持事务回滚,并触发触发器。

TRUNCATE 删除所有数据,不支持条件过滤,不可回滚,且速度更快。


相关推荐
啦啦啦_999912 分钟前
Redis-2-queryFormat()方法
数据库·redis·缓存
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码1 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean1 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
那个村的李富贵1 小时前
解锁CANN仓库核心能力:50行代码搭建国产化AIGC图片风格迁移神器
mysql·信息可视化·aigc·cann
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_12498707532 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
倒流时光三十年2 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
码农小卡拉3 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣503 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql