delete 和 truncate删除表中的数据时的区别

本文详细介绍了数据库操作中Truncate和Delete的区别,强调了Truncate在速度和不可回滚特性上的优势,以及对自增ID和表空间的影响。在删除大量数据时,Truncate比Delete更高效,但无法有条件删除。同时,提醒在没有备份的情况下谨慎使用Drop和Truncate。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

        参考:drop,delete与truncate的区别(删除表的方式,哪个快)_soulmate_P的博客-CSDN博客
        delete和truncate都可以删除表中的数据,但是呢??效率差很多

正文:

        业务场景:为了同步生产物品的数据到本地开发环境数据库,所以需要在开发环境操作:

备份--删除--导入,操作数据库informix:

sql:

        备份:unload to ./bankbf.txt delimiter "|" select * from t_dict_bank;    (导出默认是“|”分割的)

        删除表:原来习惯行使用delete from t_dict_bank; 但是后面别人提醒truncate效率更高

                    于是就是用truncate table t_dict_bank;

        导入生产数据:load from ./bank.txt delimiter "|" insert into t_dict_bank;

truncate:
1)truncate在使用时,不能加where条件。
2)truncate执行操作时,速度更快 且 不可回滚;是因为:TRUNCATE操作不会记录到事务日志中,而DELETE操作会记录到事务日志中,记录日志会耗时,所以TRUNCATE要快于DELETE 且 truncate不可回滚。
3)truncate删除表数据是:先删除整张表包括数据,再重新创建表,因此,若果表中有自增长,会把自增长id 重置成1开始。 delete删除表数据时, 每次从表中删除一行。
4)表和索引所占空间。 当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而DELETE操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。
5)应用范围。TRUNCATE 只能对TABLE;DELETE可以是table和view
6) truncate、drop是DLL(data define language),操作立即生效,不会记录到事务日志中去
7)在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采用delete且注意结合where来约束影响范围
————————————————
原文链接:https://blog.csdn.net/qq_38737586/article/details/100134039

!!!!!!!!!!!!注意点:

1、 DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。--------DML会涉及到事务、日志

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值