您的位置:首页 > 运维架构

truncate,delete,drop的异同点

2011-03-07 20:14 393 查看
源:网海拾贝

truncate,delete,drop的异同点
看重:这里说的delete是指不带where子句的delete语句

相反点:truncate和不带where子句的delete, 以及drop城市删除表内的数据
差别点:
1. truncate和 delete只删除数据不删除表的机关(界说)
drop语句将删除表的机关被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保管,但是变为invalid形状.
2.delete语句是dml,这个操纵会放到rollback segement中,事情提交之后才见效;若是有照应的trigger,实施的时间将被触发.
truncate,drop是ddl, 操纵当即见效,原数据不放到rollback segment中,不能回滚. 操纵不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)坚持原地位不动
显然drop语句将表所占用的空间一切释放
truncate 语句缺省情形下将空间释放到 minextents个 extent,除非应用reuse storage; truncate会将高水线复位(回到最初步).
4.速率,一样平居来说: drop> truncate > delete
5.宁静性:警醒应用drop 和truncate,尤其没有备份的时间.否则哭都来不及
应用上,想删除部分数据行用delete,看重带上where子句. 回滚段要饶富大.
想删除表,虽然用drop
想保管表而将所有数据删除. 若是和事情有关,用truncate即可. 若是和事情有关,或者想触发trigger,还是用delete.
若是是清算表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/拔出数据

版权声明:
原创作品,容许转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。否则将追究法令责任。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: