oracle truncate 与 delete 的区别[@more@]
| truncate与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操作不会减少表或索引所占用的空间。 7、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
|
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/66634/viewspace-854890/
,如需转载,请注明出处,否则将追究法律责任。