Truncate和delete的区别:
1、delete属于数据操作语言,不仅可以删除表中的数据,还可以删除基于真实表创建的视图中的数据,也可以结合where条件精确地删除某一条数据,还有可能涉及触发器。Truncate属于数据定义语言,只能删除表中的数据,不能作用于视图,而且不支持where子句,如果作用于表会直接删除表中的所有数据,而且不会设计触发器。
2、delete删除数据涉及到缓存,当数据非常大时可能缓存不够用,而且速度会很慢。Truncate不涉及缓存,所以涉及到大量数据时,用truncate删除数据速度会更快,效率也高。
3、delete删除表时,会涉及事物,可以支持事物的提交和回滚。首先他不会真正删除,而是将删除的数据放入一个缓存区,可以通过回滚恢复数据。而truncate不涉及事物处理,所以truncate删除数据不可恢复。