易截截图软件、单文件、免安装、纯绿色、仅160KB

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.
delete不从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的权限。
6.
truncate是DDL语言. delete是DML语言。不过要注意就是 truncate 不能在 pl/sql 上使用,要用 dynamic SQL 才可以。
DDL语言是自动提交的. 命令完成就不可回滚.
truncate的速度也比delete要快得多.
7.
truncate的时候INDEX也会删掉,而delete则不会。


相关文档:

[Oracle]高效的PL/SQL程序设计(三)

本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......

解读Oracle计划:Solaris将被拯救 MySQL继续前途未卜


【51CTO.com独家特稿】面对惊慌的客户和广泛质疑的媒体,Oracle官方最近终于出榜安民,那便是一个以“SUN CUSTOMERS ,Oracle Plans To:”为大标题的广告。直译过来便过来可知道,Oracle将要加大SPARC和Solaris的投入了,而大老板埃里森也向IBM硬件下了战书,声称Oracle将最终赢得这场竞争……
&n ......

连接oracle,sqlserver中数据库的示例代码

一 在Oracle中连接数据库
public class Test1 {
 public static void main(String[] args) {
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn = DriverManager.getConnection(
       &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号