truncate,delete,drop的异同点

  源:网海拾贝




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,再重新导入/拔出数据




版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。否则将追究法令责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975926.html