drop和delete的本质区别
drop和delete的本质区别如下
1、从删除内容上区分:
truncate和delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构、被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。
2、从语句类型上来区分:
delete语句是dml,这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。
truncate,drop是ddl,操作立即生效,原数据不放到rollbacksegment中,不能回滚。操作不触发trigger。
delete删除表格还是内容3、从对表空间的影响来区分:
delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动drop语句将表所占用的空间全部释放
truncate语句缺省情况下将空间释放到minextents个extent,除非使用reusestorage;而且truncate会将高水线复位(回到最开始)。
4、从速度的区别:
一般来说:drop>truncate>delete