玖叶教程网

前端编程开发入门

Oracle中delete from 语句与truncate语句的区别

Oracle中delete from 语句与truncate语句的区别:

1.delete....from....删除语句一定要加where条件,否则全表删除。但是可以使用rollback语句进行回退,delete支持闪回操作。

truncate table table_name; truncate 不可以回退。

原因:delete....from....where......属于DML语句。DML语句,可以回退。insert、update、delete等语句,都可以回退,进行事务操作。而truncate属于DDL数据定义语言,无法回退rollback,不支持闪回。

2.对于少量数据,使用delete删除效率高,因为是逐行删除。

对于海量数据,truncate效率高,因为truncate表分成两个过程,首先是drop table 丢弃整张表。然后再重新建立新表,只建表结构。

3.delete删除不会立即释放空间,只是换个地方存储表,换到UNDO表空间。而truncate 不会,truncate相当于永久删除。

4.delete....from ... where....删除表内某行,会产生碎片。truncate 是删除整张表表,不会产生碎片。

delete....from.....where....删除表中的内容,会产生碎片。表中有高水位线(High Water Mark)的时候,可以通过整理碎片的方法回收表内空间:

方法1. SQL> alter table table_name move;

方法2. 表的导入导出,先导出再重新导入。相当于建立一张新表。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言