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
原文地址:http://www.cnblogs.com/zhugehome/p/3767632.html