开源中文网

您的位置: 首页 > 数据库应用 > Oracle > 正文

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一个带有外键的表,如果要删除首先要取消外键,然后再删除。

Tags:truncate delete
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明