Truncate和delete的区别: 1、delete是数据操作语言,不仅可以删除表中的数据,还可以删除基于实际表创建的视图中的数据。 此外,还可以正确删除与where条件组合的数据。 此外,还可能涉及触发器。 Truncate是一种数据定义语言,只能删除表中的数据,不会影响视图。 此外,不支持where子句。 如果作用于表,则会直接删除表中的所有数据,并且不会设计触发器。
2、删除删除数据涉及缓存,如果数据非常大,缓存可能会不足,速度可能会变慢。 因为Truncate与缓存无关,所以如果涉及大量数据,用Truncate删除数据更快、更高效。
3、删除表时,delete可以与事物相关,支持事物的提交和回滚。 首先,可以将删除的数据放入缓存中,然后通过回滚恢复数据,而不是实际删除。 无法恢复truncate的删除数据,因为truncate与事务无关。