TRUNCATE和DELETE有以下几点区别
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
4、TRUNCATE不能触发任何DELETE触发器。
5、不能授予任何人清空他人的表的权限。
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
7、不能清空父表。
--------------------------
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
TRUNCATE TABLE 不能用于参与了索引视图的表
---------------------------------------------
以前总结的truncate,delete,drop的异同点
注意:这里说的delete是指不带where子句的delete语句
相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据
不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
分享到:
相关推荐
在选择delete还是truncate时,需要考虑以下几点: * 如果需要记录每个删除的记录,可以选择delete语句。 * 如果需要快速删除大量记录,可以选择truncate语句。 * 如果需要触发delete触发器,可以选择delete语句。 *...
您可能感兴趣的文章:数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)drop,truncate与delete的区别详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始浅析drop user与delete from ...
7. truncate 和 delete 命令的区别:truncate 是 DDL 操作,不需要 rollback segment,而 delete 是 DML 操作,需要 rollback segment。 知识点:truncate、delete、DDL 操作、DML 操作 8. 使用索引的理由:快速...
drop、truncate、 delete区别 数据库三范式是什么? union和union all有什么不同? char、varchar2、varchar有什么区别? 合并查询有哪些? SQL语句执行顺序 null的含义 MySQL、SqlServer、oracle写出字符存储...
7. 比较truncate和delete 命令 8. 使用索引的理由 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 10. FACT Table上需要建立何种索引? 11. 给出两种相关约束? 12. 如何在不影响子表的前提下,重建一个母...
* truncate和delete命令的区别:truncate是DDL操作,不需要rollback segment,而delete是DML操作,需要rollback segment且花费较长时间。 七、其他 * 两种检查表结构的方法:DESCRIBE命令和DBMS_METADATA.GET_DDL...
索引的使用需要注意以下几点: * 索引的建立需要根据实际情况选择合适的索引类型。 * 索引的维护需要定期对索引进行重建和优化。 * 索引的使用需要避免对索引进行频繁的插入和删除操作。 CHAR和VARCHAR CHAR和...
7. truncate和delete命令的区别: truncate是DDL操作,它移动HWK,不需要rollback segment。delete是DML操作,需要rollback segment且花费较长时间。 8. 使用索引的理由: 快速访问表中的数据块。 9. STAR ...
* 比较 truncate 和 delete 命令:两者都可以用来删除表中所有的记录。区别在于:truncate 是 DDL 操作,它移动 HWK,不需要 rollback segment。delete 是 DML 操作,需要 rollback segment 且花费较长时间。 * 两个...
truncate 和 delete 命令都可以用来删除表中所有的记录。区别在于:truncate 是 DDL 操作,它移动 HWK,不需要 rollback segment。而 Delete 是 DML 操作,需要 rollback segment 且花费较长时间。 7.索引 使用...
28、drop、truncate、 delete区别 50 29、如何优化大数据量的访问? 51 30、oracle怎么去除去重 51 31、合并查询有哪些? 51 32、SQL语句执行顺序 51 33、null的含义 52 34、mysql分页 52 35、MySQL、SqlServer、...
以下是对 Oracle 面试题集锦的详细解释和知识点总结: 1. 冷备份和热备份的不同点: 冷备份是在数据库关闭后进行备份,适用于所有模式的数据库。热备份是在数据库仍旧处于工作状态时进行备份,适用于归档模式的...
本文档主要涵盖了BI平台工程师笔试题的几个关键知识点,包括进程和线程的区别、数据库中的各种组件、删除表中全部数据的方法、往数据库中加载大量数据的方法、生产者消费者模型的基本原理等。 首先,让我们来讨论...
在删除大量数据时,需要注意以下几点: * 硬盘空间:如果您的硬盘空间小,需要删除大量数据时,可能会出现空间不足的问题。 * 事务处理:删除大量数据时,需要注意事务处理的影响,以免影响数据库的性能。 * 数据...
40. session与cookie的区别和联系? 19 41. Statement和PrepareStatement的区别 19 42. JSP的内置对象及方法。 19 43. JSP的常用指令 20 44. 四种会话跟踪技术 20 45. Request对象的主要方法: 21 46. jsp有哪些动作...
10.请说明SQLServer中delete from tablea & truncate table tablea的区别 11. Oracle安装完成后,如何用命令行启动和关闭数据库? 12. 类有哪三个基本特性?各特性的优点? 13.谈谈对XML的理解?说明Web应用中Web.xml...
5. Drop、Delete 与 Truncate 的共同点和区别:Drop、Delete 与 Truncate 都是删除数据的语句,但它们的作用域不同,Drop 删除表,Delete 删除行,Truncate 删除表中的所有数据。 六、其他问题 1. MySQL 中的 ...
在删除重复数据时,需要注意以下几点: * 删除重复数据前,需要备份数据,以免数据丢失。 * 删除重复数据时,需要确保删除的数据是重复的,以免删除了正确的数据。 * 删除重复数据后,需要校验数据的正确性,以免...
你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...
你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的...