delete和truncate

delete table a

truncate table b

用truncate删除表比delete删除表   逻辑读和cost都有明显的减少

delete 删除并不能释放空间,虽然将很多块的记录删除,但空间依然会保留,oracle在查询时,依然会查询这些块

而truncate是一种释放高水平位的动作,这些空快被回收,空间也就释放掉了。

例子

我们要统计某个大楼的人数,从第1楼道20楼,每个房间都打开检查一下,发现实际情况是一个人都没有。

但问题是打不开房间我们怎么知道没有人呢。这就是delete后空块的情况。

truncate是我们想统计大楼的人数,结果发现该大楼被铲平了,啥房间也没有,很快得到了没有人的结论。

truncate 是ddl操作  而非dml

truncate 后面是不带条件的

如 truncate table a where ...是不行的。

但是如果在表中这些where条件能形成有效地分区,oracle支持在分区表中做truncate分区的。

命令 alter table t truncate partition ‘分区名‘;

这是分区表最实用的功能的功能,高效清理数据,释放空间

delete和truncate,布布扣,bubuko.com

时间: 2024-12-29 13:14:33

delete和truncate的相关文章

oracle中delete drop truncate的用法和区别

数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放掉表空间或者扩容表空间来解决问题. 一般当系统中大量使用分区表,而针对分区表清除数据,是不会释放表空间的,必须把分区drop掉,才会释放空间. 下面我们具体了解一下这三个命令: 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在r

oracle中delete、truncate、drop的区别

oracle中delete.truncate.drop的区别 标签: deleteoracletable存储 2012-05-23 15:12 7674人阅读 评论(0) 收藏 举报  分类: oracle(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(c

MySql的Delete、Truncate、Drop分析

MySql的Delete.Truncate.Drop分析 相同点: truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据 不同点 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop 语句将删除表的结构被依赖的约束(constrain).触发器(trigger).索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态. 2. delete 语句是数据库操作语言(dml),这操作会放到rollb

3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入

 1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date definition Language) 数据库定义语言 create table;create view index sequence synonvm同义词,truncate table DCL语言 (Data control Language) 数据控制语言 commit rollback s

PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)

2014-06-02 BaoXinjian 一.总论 1. Delete 2. Drop 3. Truncate 4. 例子:一亿条数据中如何删除其中的不符合条件的9999万条,保留剩余部分 二.具体分析 1. Delete / Drop / Truncate 删除方式的区别 (1).删除数据及表定义 truncate和 delete只删除数据不删除表的结构(定义)          drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较

数据库中删除语句Drop.Delete.Truncate的相同点和不同点的比较(举例说明) 数据库删除语句的分别介绍:Delete:用于删除表中的行(注:可以删除某一行:也可以在不删除表的情况下(即意味着表的结构.属性.索引完整)删除所有行)                语法:删除某一行:Delete From 表名称  Where 列名称=值              删除所有行: Delete From 表名称       或     Delete *  From  表名称   Drop:

用Delete与Truncate清除表数据对高水位的影响

众所周知,oracle段都有一个在段内容纳数据块的上限,我们把这个上限称为"High Water Mark"(HWM).这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment.原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值.HWM就像一个水库的历史最高水位,这也是为何会称之为"高水位"的缘故.实际环境中随着我们表中数据的不断增长,表的高水位也被不断的推高.当高水位达到一定程度之后,会对该表上的SQL查询效率产生负

Mysql中DELETE,TRUNCATE,DROP的区别

1. delete:    delete from table_name;          or         delete from table_name where column = ?; 删除表中数据,但是不会删除表结构,删除的时候是一行一行删,效率较低,可用来删除单条数据. 2. truncate: truncate from table_name; 删除表中数据,不删除表结构,相比于delete,效率更高,它所使用的系统和事物日志资源少. //对于delete与truncate,最

oracle中drop、delete和truncate的区别

oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表, 1. delete和truncate都是删除表中的内容而不能删除表的结构,而drop则是删除表的结构和内容(表将不复存在): 2. delete可以删除整个表的数据也可以有选择性地删除某一条或多条数据,而truncate则是一次性删除整个表的数据: 3. 使用delete删除的表数据并没有真正被删掉,数据占用的表空间还存在,相当于Windows中将数据删除到回收站中,日后有需要还可以恢复: 4. 使用tr