乐趣区

PLSQL三种删除方式-DeleteTruncateDrop

看完这章你会学习到以下内容:

  • 它们的共同点
  • 它们的不同点


相同点:

它们都可以删除数据,清理那些无关紧要,与业务无关的数据。


不同点:

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

  

退出移动版