truncate、delete与drop的区别

truncate、delete与drop的区别
相同点:
         1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
         2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
         1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了) 
       2.就删除的速度来说:drop > truncate >delete     删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。    
    3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
truncate、delete与drop的区别
相同点:
         1.truncate和不带where子句的delete,以及drop都会删除表内的数据。
         2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
         1.truncate和delete只是删除数据不删除表的结构。drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid。 (总之一句话,truncate与delete都是删除全部的数据,但是表还存在,但是drop是全部删除,表不存在了) 
       2.就删除的速度来说:drop > truncate >delete     删除的时候truncate比delete使用的系统和事务日志资源少。delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。    
    3.在安全的角度来讲:谨慎使用drop和truncate,尤其是没有备份的情况下,不让你哭都来不及了。谨慎。
使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值