快速删除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 删除所有数据,不支持条件过滤,不可回滚,且速度更快。


相关推荐
想摆烂的不会研究的研究生2 小时前
每日八股——Redis(2)
数据库·redis·缓存
optimistic_chen2 小时前
【Redis系列】主从复制
linux·数据库·redis·缓存·中间件·命令行·主从复制
一个天蝎座 白勺 程序猿2 小时前
KingbaseES 处理 PL/SQL 运行时错误全解析:从异常捕获到异常处理的实践指南
数据库·sql·oracle·kingbasees
leo_2322 小时前
表&表结构--SMP(软件制作平台)语言基础知识之三十三
数据库·开发工具·表结构·smp(软件制作平台)·应用系统
C***11502 小时前
Spring TransactionTemplate 深入解析与高级用法
java·数据库·spring
计算机学姐2 小时前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
+VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
2301_800256113 小时前
B+树:数据库的基石 R树:空间数据的索引专家 四叉树:空间划分的网格大师
数据结构·数据库·b树·机器学习·postgresql·r-tree
程序人生5183 小时前
宝塔安装完mysql5.7后 root无法通过远程连接问题排查
mysql·宝塔面板