浅谈TRUNCATE TABLE

本文探讨了数据库操作中TRUNCATE与DELETE的区别。TRUNCATE速度快、不占用缓存资源且不可回滚,能快速释放空间并重置高水位线及索引,适合清空整个表;而DELETE则更为灵活,可以按条件删除记录,但速度慢且无法重置表大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TRUNCATE  的特点

1、TRUNCATE非常快且不会占用缓存资源。Delete可被ROLLBACK命令撤销,而TRUNCATE不会被撤销(TRUNCATE是一个DDL语言,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。 

2、TRUNCATE将重新设置高水平线和所有的索引。经过TRUNCATE操作后的表比Delete操作后的表要快得多。 

3、TRUNCATE不能触发任何Delete触发器。 

4、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。 

5、不能清空父表。

 

TRUNCATE  与delete相比的优势

在oracle里,使用delete删除数据以后,数据库的高水位线下降,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。

 

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

### 使用 TRUNCATE TABLE 语句及其效果 TRUNCATE TABLESQL 中用于速删除表中所有数据的命令,与 DELETE 语句不同,它不会逐行删除数据,而是直接释放表的数据段。以下是 TRUNCATE TABLE 的使用方法及其相关行为: #### 1. 基本语法 TRUNCATE TABLE 的基本语法如下: ```sql TRUNCATE TABLE table_name; ``` 此语句会清空指定表中的所有数据[^2]。 #### 2. TRUNCATE 的主要特性 - **高效性**:TRUNCATE 不会生成大量的撤销(undo)数据或重做(redo)日志,因此比 DELETE 更且占用资源更少。 - **不触发触发器**:与 DELETE 不同,TRUNCATE 不会触发表上的删除触发器。 - **高水位标记(HWM)重置**:执行 TRUNCATE 后,表的高水位标记会被重置到第一个可用的数据块。 - **权限要求**:用户需要对目标表具有 ALTER 或 DROP 权限才能执行 TRUNCATE 操作。 #### 3. TRUNCATE 的限制 - **无法回滚**:TRUNCATE 是一个 DDL 操作,默认情况下无法通过事务回滚[^2]。 - **外键约束影响**:如果表存在外键约束,则无法直接使用 TRUNCATE,除非先禁用约束。 - **子表不受影响**:TRUNCATE 只作用于目标表,不会递归清除子表中的数据[^2]。 #### 4. 示例 以下是一个简单的示例,展示如何使用 TRUNCATE TABLE: ```sql -- 清空名为 employees 的表 TRUNCATE TABLE employees; ``` #### 5. 注意事项 - 在 Oracle 数据库中,TRUNCATE 释放的空间会计入表空间的用户配额[^5]。 - 如果需要保留表结构但删除所有数据,TRUNCATE 是最佳选择;但如果需要记录删除操作或触发触发器,则应使用 DELETE[^2]。 #### 6. 相关概念 TRUNCATE 的行为可以结合数据库的其他特性来理解,例如: - **索引处理**:TRUNCATE 会同时清空表的关联索引[^2]。 - **锁机制**:在 InnoDB 存储引擎中,TRUNCATE 可能不会记录所有锁定的表信息[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值