`
qq_24665727
  • 浏览: 121001 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

阅读更多
1.DELETE
 ・DML语言
 ・可以回退
 ・可以有条件的删除

     DELETE FROM 表名
   WHERE 条件

2.TRUNCATE TABLE
 ・DDL语言
 ・无法回退
 ・默认所有的表内容都删除
 ・删除速度比delete快。

   TRUNCATE TABLE 表名



1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,
而TRUNCATE则不会被撤销。 
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,
不能对TRUNCATE使用ROLLBACK命令。 
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,
经过TRUNCATE操作后的表比Delete操作后的表要快得多。 
4、TRUNCATE不能触发任何Delete触发器。 
5、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。 
6、不能清空父表。

在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据
以后,查询这张表的速度和删除之前一样,不会发生变化。

因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线
就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,
还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增
删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,
数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出
现使用delete删除数据以后,查询的速度还是和delete以前一样。
0
0
分享到:
评论

相关推荐

    TRUNCATE与 DELETE区别

    首先,TRUNCATE TABLE 是一种快速删除表中所有数据的方式,它并不记录每行的删除操作,而是直接释放存储数据的页面。这意味着,当使用 TRUNCATE 时,事务日志空间的使用量非常小,这对于大型表尤其有利。相比之下,...

    oracle中truncate table后的数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...

    sql之truncate、delete与drop区别

    在实际应用中,如果需要快速清理整个表的数据,并且不需要保留任何记录以供恢复,可以使用 `TRUNCATE`。如果需要保留删除操作的历史记录或者可能需要撤销删除,应使用 `DELETE`。而当确定不再需要某张表或数据库对象...

    truncate,delete以及drop区别汇总

    在数据库管理中,经常需要对数据表进行各种操作,比如删除表中的数据、删除整个表等。`truncate`, `delete` 和 `drop` 是三种常见的 SQL 命令,它们在功能上有很大的差异。本文将详细探讨这三种命令之间的区别,并...

    oracle数据库删除数据Delete语句和Truncate语句的对比.docx

    Delete 语句删除记录时候,记录是逐条删除的,每删除一条记录都会产生一个事务日志,以便在出现错误时可以回退。因此,Delete 语句删除大量数据时 зай很长时间,并且占用较多的系统资源。 Truncate 语句删除数据...

    delete,truncate和drop的区别

    - 如果有触发器与删除操作相关联,则会在删除过程中触发这些触发器。 - `delete`操作不会改变表的高水线(HWM)。 - **应用场景**: - 当需要根据特定条件删除数据行时使用。 - 如果需要触发特定的触发器事件或...

    数据库中truncate,delete,drop语句的比较

    ### 数据库中truncate、delete与drop语句的深入解析 ...综上所述,`TRUNCATE`、`DELETE`与`DROP`各有特点,在使用时应根据具体需求选择合适的方法。了解这些差异有助于更有效地管理和维护数据库系统。

    oracle数据库删除数据Delete语句和Truncate语句的对比.pdf

    这是因为Delete会逐行删除并产生回滚信息,而Truncate则直接丢弃表的所有数据,不涉及回滚,这使得Truncate在处理大数据量时速度远超Delete。在示例中,当表中有4194304条数据时,使用Delete删除花费了90.964秒,而...

    Truncate Table的用法讲解

    `TRUNCATE TABLE` 是 SQL 语言中一种用于删除表中所有数据的命令,但它与 `DELETE` 语句有着显著的区别。这篇文章将深入讲解 `TRUNCATE TABLE` 的使用方法,以及它与 `DELETE` 的对比,同时涵盖权限、适用场景及注意...

    MySQL删除表操作实现(delete、truncate、drop的区别)

    本文主要讲mysql中三种删除表的操作,delete语句、truncate语句以及drop语句的区别: 简介 delete 1、删除整张表的数据: delete from table_name; 2、删除部分数据,添加where子句: delete from table_name ...

    sql删除表中的记录的方法

    在SQL中,删除表中的记录是一项常见的操作,通常有三种主要方法:TRUNCATE TABLE、DELETE语句和DROP TABLE。下面将详细介绍这三个方法及其特点。 1. TRUNCATE TABLE: 这个命令用于快速删除表中的所有行,但保留表...

    利用 Oracle 系统触发器防止误删除表操作

    当DBA或其他用户具有足够的权限时,可能会因为输入错误等原因执行`DROP TABLE`或`TRUNCATE TABLE`命令,导致重要的数据表被意外删除或清空。例如,用户原本打算删除名为`A`的表(`DROP TABLE A CASCADE CONSTRAINTS;`...

    delete from 表名与truncate table 表名区别

    而 `TRUNCATE TABLE` 不支持条件删除,它会删除表中的所有记录,无法进行选择性地保留。 3. 性能差异 在处理大量数据时,`TRUNCATE TABLE` 的执行速度通常比 `DELETE FROM` 快得多。这是因为 `TRUNCATE` 只是一个...

    MySQL数据库:数据记录的删除.pptx

    `TRUNCATE TABLE`比`DELETE`更快,因为它不记录每一行的删除操作,而是直接释放整个数据页。然而,`TRUNCATE TABLE`不会触发触发器,且不会返回受影响的行数,且对于带有`AUTO_INCREMENT`列的表,计数器会重置为初始...

    mysql delete 多表连接删除功能

    `TRUNCATE`比`DELETE`更高效,因为它不记录单个行的删除操作,而是快速清除整个表。它不能报告删除了多少行,且只能用于单个表,不适用于有外键约束的情况。 **多表连接删除** 在多表环境中,如果两个或更多表...

    SQL中Truncate的用法

    本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用...

    ORACLE truncate 数据恢复

    由于`TRUNCATE`不记录单行删除,所以它在速度上比`DELETE`快很多,且不触发任何与删除相关的触发器或回滚段。然而,这也意味着`TRUNCATE`操作一旦执行,数据就无法通过正常的数据库事务回滚来恢复,这对于初学者来说...

Global site tag (gtag.js) - Google Analytics