网站首页 > 数据库 / 正文
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. 表的导入导出,先导出再重新导入。相当于建立一张新表。
Tags:oracle语句查询
猜你喜欢
- 2024-11-26 那些年我们踩过的语句创建oracle 12c cdb实例的坑
- 2024-11-26 Oracle脚本转和MySQL转换
- 2024-11-26 oracle修改数据自动更新数据修改时间
- 2024-11-26 oracle中where 子句和having子句中的区别介绍
- 2024-11-26 第8篇:Oracle注入漏洞绕waf的新语句
- 2024-11-26 sql语句超65535个绑定变量参数导致Oracle实例中止问题
- 2024-11-26 5 个免费的在线 SQL 数据库环境,比Navicat 香
- 2024-11-26 Oracle游标sql语句代码块的优化
- 2024-11-26 Oracle优化:sql语句的执行顺序
- 2024-11-26 Mysql\Sql server\Oracle三种数据库实现限制查询结果的语句