【SQL】delete 与 truncate 命令的区别

区别

truncate delete
属于 DDL(数据定义语言) 范畴 属于 DML(数据操作语言) 范畴
删除表数据,不能删除视图数据 删除表数据,删除视图数据
只可以梭哈删除 通过 where 进行选择性删除
不涉及事务处理 删除表中数据涉及事务处理
效率高、但无法撤销 效率低,涉及事务考虑的就多
不能删除 foreign key 约束引用的表 按照一定的先后顺序可以删除相关表中的数据
是删除表再创建 是逐条删除
重置auto_increment的值 不会重置auto_increment的值
不知道删除了几条 delete知道
当被用于带分区的表时,truncate 会保留分区

写法

sql 复制代码
delete from students where age < 10
delete from students;

truncate table students;

使用场景

1、业务删除数据时、且数据量、性能可控的情况下,可以考虑使用 delete from xxx where 业务条件。

2、需要考虑事务提交、撤销的管理机制时,可以使用 delete

3、当需要删除大批量数据时,同时要求速度快,效率高并且无需撤销时,可以使用 truncate

4、在企业级开发中,实际上都是进行逻辑删除(将数据进行删除标识处理)、而并不进行物理上的删除

5、在实际企业开发、维护过程中,不管使用 delete 还是 truncate 命令前,都要考虑数据的备份

参考

【SQL】delete 与 truncate 命令的区别

相关推荐
2401_891482172 分钟前
Python多线程与多进程:如何选择?(GIL全局解释器锁详解)
jvm·数据库·python
Predestination王瀞潞3 分钟前
6.3.1 软件->W3C XPath 1.0 标准(W3C Recommendation):XPath(XML Path Language)查询语言
xml·数据库·oracle
2401_851272993 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
快乐柠檬不快乐9 分钟前
Java连接电科金仓数据库(KingbaseES)实战指南
java·开发语言·数据库
AllData公司负责人20 分钟前
AllData数据中台通过集成DolphinScheduler+Seatunnel实现SAP HANA数据库同步到Doris数据仓库
数据库·数据仓库·sap hana
2401_8463416520 分钟前
使用Python进行网络设备自动配置
jvm·数据库·python
执笔画情ora33 分钟前
Postgresql管理-杀会话还是取消会话?
数据库·oracle
清风徐来QCQ41 分钟前
redis 面试可能会问的问题
数据库·redis·面试
这辈子谁会真的心疼你42 分钟前
如何修改照片定位信息?详细介绍两个方法
数据库
Oueii1 小时前
构建一个基于命令行的待办事项应用
jvm·数据库·python