删除、截断和删除之间的区别

注意:这里的删除是指没有WHERE子句的删除语句。
相同点
截断和删除没有WHERE子句,而删除则全部删除表中的数据。

差异:
1。截断和删除只删除不删除表(定义)的数据结构。
下拉语句将删除表的约束、触发器和索引,并且依赖于表的存储过程/函数将被保留,但它将成为无效状态。
这是2.delete DML声明,它将被放置在回滚段,不直到提交事务生效;如果有相应的触发器,它将被触发时,它被执行。
截形,降是DDL操作立即生效,原始数据是不是放在回滚段,不能回滚。操作不触发触发器。
的3.delete声明不影响程度的桌子占,和高水位线保持原来的位置
很明显,下拉语句释放了表所占用的所有空间。
截断语句是自由释放的空间minextents程度,除非重用存储使用;截断将重置水管线(重新开始)。
4。速度,一般说来:降>;截断>;删除
5。安全性:小心地使用下拉和截断,特别是在没有备份的情况下。否则,哭得太迟了。
在使用中,希望删除带删除的数据行的一部分,并注意WHERE子句。回滚部分足够大。
如果要删除表,当然要使用下拉
如果与事务无关,可以使用截断。如果它与事务相关,或者如果您想触发触发器,或者使用删除。
如果是在表的片段,你可以使用truncate跟上重用存储和重新导入/插入数据

说起来很流行:

在实际应用中,三者之间的差异是明显的。
当您不再需要表时,使用下拉;
当您仍然需要保存表时,如果要删除所有记录,请使用截断;
如果要删除记录的一部分(始终使用WHERE子句),请使用删除。