清空表时优先使用truncate

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 清空表时优先使用truncate

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不能用于参与了索引视图的表。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
SQL 监控 关系型数据库
大数量的DML时对索引处理的技巧
【8月更文挑战第15天】在执行大批量DML操作(如INSERT、UPDATE、DELETE)时,可通过禁用索引、分批处理、选用适宜的索引类型与结构以及持续监控调整等策略优化性能。禁用索引可加速数据修改,分批处理减轻系统负担,合理索引类型支持不同查询需求,并定期优化索引结构保持高效。全程监控确保适时调整策略,提升整体效能。
|
8月前
|
存储 关系型数据库 MySQL
Mysql数据库清空表 truncate和delete
Mysql数据库清空表 truncate和delete
163 0
|
存储 索引
十、清空表时优先使用truncate
十、清空表时优先使用truncate
126 0
|
SQL Oracle 关系型数据库
truncate表后恢复方法总结
truncate表后恢复方法总结   1.1  BLOG文档结构图   1.2  前言部分   1.
1726 0
插入、更新、删除表中的数据
插入、更新、删除表中的数据 笔记 (文中的姓名、电话等为随机编写的,如有冒犯,请多多包涵) >需求1 向科目表中添加数据,如表1 科目编号 科目名 课时数 年级编号 1 Logic Java 220 1 2 HTML 160 1 3 Java OOP 230 2 第一步,创建科目表subject,create table `subject`(.
1586 0
|
数据库 关系型数据库 MySQL
|
SQL 索引 Perl
truncate表,会将统计信息清除么?
看见微信群有位朋友问: truncate表,会将统计信息清除么? 有些朋友回复, 数据字典信息都没有了,统计信息就清除了,所以是没有统计信息的。 做个实验,跟踪一下truncate,应该比较清楚。
1261 0