Truncate,delete与drop区别

truncate,delete与drop的异同点:

相同点:

三者均会删除表内的data。

不同点:

<1> truncate与不带where的delete: 只删除数据,而不删除表的结构(定义)

       drop将删除表的结构被依赖的约束(constrain),触发器(trigger), 索引(index);依赖于该表的存储过程/函数将被保留,但其状态   会变为:invalid。

<2>delete语句为DML(data maintain Lanaguage), 这个操作会被放到rollback segment中,事务提交后才生效。如果有相应的tigger,执行的时候将被触发。

       truncate,drop是DLL(data define language), 操作立即生效,原数据不放到rollback segment中,不能回滚;操作部触发tigger。

 <3>delete语句不影响所占用的extent,高水线(high watermark)保持原位置不动。

 drop语句将表所占用的空间全释放掉。

  truncate语句缺省情况下将空间释放到minextents个extent,除非使用reuse storage;truncate会将高水线(high watermark)复位(回到最初位置)

<4>速度:

一般而言,drop > truncate > delete。

阅读更多
文章标签: delete dll 存储
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭