第一种解释:
Delete:是dml操作,能rollback。因此删除数据时会产生大量的rollback,会占用很大的rollback segments,而Truncate不会
表数据删除后表空间占用还在,相当于windows的回收站,还能够恢复(rollback)
Truncate:清除数据,表空间中的表数据占用的表空间会被立即释放,因此truncate不能rollback。
第二种解释(个人倾向于这种解释):
内存中存在一种叫做水平线的东西
水平线的右边是永远没有占用、没有东西。
Delete删除是删除水平线左边的东西、并且水平线保持不动。
Truncate则是直接向左移动水平线、清空所有数据,因此Truncate不能回滚、效率这么高。