看完这章你会学习到以下内容:
- 它们的共同点
- 它们的不同点
相同点:
它们都可以删除数据,清理那些无关紧要,与业务无关的数据。
不同点:
1.语句方面
- delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
- truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
2.删除内容方面
- truncate和 delete只删除数据不删除表的结构(定义)
- drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);
- delete/drop可以删除视图,索引,触发器等,truncate只针对表。
3.高水位HWM
- delete语句不影响表所占用的区(Extent), 高水线保持原位置不动。
- drop语句将表所占用的空间全部释放。
- truncate 语句缺省情况下将空间释放到 minextents个extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度方面
- 一般来说: drop> truncate > delete
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。