首页 > 代码库 > delete和truncate
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 ‘分区名‘;
这是分区表最实用的功能的功能,高效清理数据,释放空间
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。