DELETE DROP TRUNCATE三者之间的差别
delete:删除表中的数据,对表结构不影响相关的对象还是存在的,需要消耗系统资源(cpu,redo log space,undo segment space,关联index 资源),当删除每一行的时候相关联的触发器也要被触发,不影响表所占用的extent, 高水线(high watermark)保持原位置不动
drop:所有相关联的索引,约束,触发器都会被删除,所有依赖于该表的存储过程/函数将保留,但是变为invalid状态,表占用的空间会被释放。
truncate: 用truncate来删除表中的所有记录是一种快速有效的方法,truncate语句不会产生任何undo信息而且会被快速提交,由于是DDL语句不可以回滚,但不会影响表结构。 truncate会将高水线复位(回到最开始 不使用reuse storage子句)。不会触发相关联的触发器,作为其他表中的外键都会变得无效,相关联的索引不需要重建任然有效。整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
速度: drop>truncate>delete




Related posts

coded by nessus
分享:  DeliciousGReader鲜果豆瓣CSDN网摘
Trackback

no comment untill now

Add your comment now

无觅相关文章插件