日期:2014-05-16  浏览次数:20480 次

Truncate和Delete区别


Truncate和Delete区别?
1.truncate is fast but can't rollback,delete can rollback
2.truncate时index也会删掉,但delete则不会.
3.truncate 会把 highwatermark 回归至 0 ... 当下一次再插入新资料时就会快一些啦。
4.trancate 删除数据释放空间,delete则不会

truncate操作 同没有where条件的delete操作十分相似
1、无论truncate大表还是小表速度都非常快。delete要产生回滚信息来满足回滚需求而truncate是不产生的。
2、truncate是DDL语句进行隐式提交,不能进行回滚操作
3、truncate重新设定表和索引的HWM(高水标记),由于全表扫描和索引快速扫描都要读取所有的数据块知道HWM为止所以全表扫描的性能不会因为delete而提高,但是经过truncate操作后速度会很快
4、truncate不触发任何delete触发器
5、不能赋给某个用户truncate其它用户表的权限。如果需要trucate其它用户表的权限必须对该用户赋DROP ANY TABLE权限
6、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。