Oracle truncate table 与 delete tabel的区别(转)

 一、

1.delete产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments .truncate 是DDL操作,不产生rollback,速度快一些.
  
  Truncate table does not generate rollback information and redo records so it is much faster than delete.
  
  In default, it deallocates all space except the space allocated by MINEXTENTS unless you specify REUSE STORAGE clause.
  
2.不从tablespace中腾出空间,需要
  
  ALTER TABLESPACE AAA COALESCE; 才有空间
  
3.truncate 调整high water mark 而delete不.truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认)
  
  delete 则不可以。
  
4.truncate 只能对TABLE
  
  delete 可以是table,view,synonym
  
5.TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限

二、 truncate是DDL語言.
delete是DML語言

DDL語言是自動提交的.
命令完成就不可回滾.

truncate的速度也比delete要快得多.

三、 truncate 会把 highwatermark 回归至 0 ... 当下一次再插入新资料时就会快一些啦。

所以一般都是在 temp table 上使用的,不过要注意就是 truncate 不能在 pl/sql 上使用,要用 dynamic SQL 才可以。

四、

当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a WHERE clause), 用 delete.

五、

1.TRUNCATE TABLE

I ndex也會刪掉不是指drop index

sys@DEMO> create index tom.idx_object_name on tom.t(object_name);

已建立索引.

sys@DEMO> select block_id,bytes from dba_extents where segment_name='IDX_OBJECT_NAME';

BLOCK_ID BYTES
---------- ----------
17321 65536
17329 65536
17337 65536
17345 65536
17353 65536
17361 65536
17369 65536
17377 65536
17385 65536
17393 65536
17401 65536
17409 65536
41865 65536
41873 65536
41897 65536
41905 65536
18953 1048576
19081 1048576
19209 1048576
19337 1048576

已選取 20 個資料列.

sys@DEMO> TRUNCATE TABLE TOM.T;

表格被截斷.

sys@DEMO> select block_id,bytes from dba_extents where segment_name='IDX_OBJECT_NAME';

BLOCK_ID BYTES
---------- ----------
17321 65536

2.DELETE table

sys@DEMO> insert into tom.t select * from all_objects;

已建立 27747 個資料列.

sys@DEMO> insert into tom.t select * from all_objects;

已建立 27747 個資料列.

sys@DEMO> commit;

確認完成.

sys@DEMO> select block_id,bytes from dba_extents where segment_name='IDX_OBJECT_NAME';

BLOCK_ID BYTES
---------- ----------
17321 65536
17201 65536
17241 65536
17265 65536
17297 65536
17353 65536
17369 65536
17377 65536
17385 65536
17393 65536
17401 65536
17409 65536
41865 65536
41873 65536
41897 65536
41905 65536
17673 1048576
17801 1048576
18185 1048576
18441 1048576

已選取 20 個資料列.

sys@DEMO> delete from tom.t;

已刪除 55494 個資料列.

sys@DEMO> select block_id,bytes from dba_extents where segment_name='IDX_OBJECT_NAME';

BLOCK_ID BYTES
---------- ----------
17321 65536
17201 65536
17241 65536
17265 65536
17297 65536
17353 65536
17369 65536
17377 65536
17385 65536
17393 65536
17401 65536
17409 65536
41865 65536
41873 65536
41897 65536
41905 65536
17673 1048576
17801 1048576
18185 1048576
18441 1048576

已選取 20 個資料列.

Oracle truncate table 与 delete tabel的区别(转)相关推荐

  1. DROP TABLE、TRUNCATE TABLE和DELETE的区别

    相同点 TRUNCATE TABLE和DELETE都可以删除整个数据库表的记录 不同点 DELETE DML语言 可以回退 可以有条件的删除 DELETE FROM 表名 WHERE 条件 TRUNC ...

  2. SQL中truncate table和delete的区别

    truncate table table_namedelete from table_namedrop table table_name truncate table在功能上与不带where子句的de ...

  3. oracle truncate写法,Oracle Truncate Table

    oracle函数 的 Oracle Truncate Table 在本教程中,您将学习如何使用Oracle TRUNCATE TABLE语句更快更有效地从表中删除所有数据(也叫截断表). Oracle ...

  4. truncate(截断)与delete(删除)的区别

    truncate(截断)与delete(删除)的区别 truncate:会清空表中所有的数据,速度快,不可回滚:实质是删除整张表包括数据再重新创建表: delete:逐行删除数据,每步删除都是有日志记 ...

  5. oracle truncate table语法,SQL Truncate Table

    在本教程中,我们来学习如何使用SQL TRUNCATE TABLE语句高效,快速地删除表中的所有数据. 1. SQL TRUNCATE TABLE语句简介 要删除表中的所有数据,可使用不带WHERE子 ...

  6. TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.DELETE・DML语言・可以回退・可以有条件的删除・不能触发任何Delete触发器・当表被清空后表和表的索引讲重新设置成 ...

  7. SQL中truncate table和delete的区别 --转

    内容: http://www.cnblogs.com/GT_Andy/archive/2010/01/28/1921871.html 感谢博主的分享!!! 转载于:https://www.cnblog ...

  8. Oracle truncate、 delete、 drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  9. oracle truncate 日期,【Oracle】truncate和delete区别

    truncate table 和delete * from的区bai别为:释放数据不同.清空标识不du同.触发器不同.zhi 一.释放数据不同 1.truncate table:truncate ta ...

最新文章

  1. Docker虚拟化解析
  2. ABAP中将字符格式的金额转换为数值的函数
  3. DM368开发 --IPNC 设置过程
  4. Spring Data Jpa 实体类自动创建数据库表失败解决
  5. 报告解读|远程银行:从扎根网络到加速上云
  6. 洛谷2055 [ZJOI2009]假期的宿舍
  7. 我的爹,我的娘(2006-02-22 21:39:07)(新浪)
  8. Spark精华问答:DataFrame与RDD的主要区别在哪?
  9. ICCV 2019 Oral 端到端任意形状场景文字识别
  10. jpa 托管_JPA EntityManager详解(一)
  11. 直播电商都用上 AI 实时翻译了!歪果仁也能听懂李佳琦
  12. 服务器搬迁方案_网站服务器迁移方案
  13. zblog mysql修改_MySQL_网上下载的Zblog模板怎么修改?,      终于下 - phpStudy
  14. [iOS]苹果开发证书 一个证书多人开发 注意项
  15. 危机四伏,卡士酸奶的高端人设还立得住吗?
  16. 回眸 2020,展望 2021
  17. 浏览器突然不能上网,DNS问题
  18. 【云和恩墨业务介绍】之 SQL 审核服务
  19. 各种破解软件方法汇总
  20. 财报发布后分红1.32亿美元 陌陌为何稳居陌生人社交上位圈?

热门文章

  1. 2019.03.24 视图和静态读取
  2. lua-5.2.3编译问题记录quot;libreadline.so: undefined reference to `PC#39;quot;
  3. ios网络学习------4 UIWebView的加载本地数据的三种方式
  4. SharePoint 使用代码创建 SPWeb/SPSiite/SPWebApplication以及WebPart添加到页面与删除 (一)...
  5. M2第五天DailyScrum——PM(李忠)
  6. 使用Google Weather API查询天气预报
  7. 第34 memcached缓存
  8. multiprocessing python_Python多进程运行——Multiprocessing基础教程1
  9. android studio tree,Git 、Sourse Tree 和 Android Studio配置遇到的问题
  10. 对话李飞飞,揭秘国际体育赛事风“云”背后的黑科技