腾讯云数据仓库 TCHouse-X TRUNCATE 语句

TRUNCATE TABLE 用于高效地清空表中的所有数据,同时保留表的定义(Schema)和结构。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

一、语法

TRUNCATE [TABLE] [IF EXISTS] [db_name.]table_name

二、使用说明

·核心用途:常用于 ETL 流程中清空中间表或临时表。相比于删除并重建表,或使用 INSERT OVERWRITE,TRUNCATE 是一种低开销、高性能的方法。

·适用范围:

·删除表中的所有数据及其相关的物理数据文件。

·支持内表、外表、分区表。

·操作适用于全表,会自动处理所有分区的数据。

·副作用:执行后,由 COMPUTE STATS 生成的所有表统计信息和列统计信息将被重置(清空)。

·安全建议:

·在执行前确保位于正确的数据库(使用 USE 切换),或使用全限定名(db.table)。

·IF EXISTS:此子句可防止因表不存在而报错,非常适合放在自动化脚本或标准化 ETL 设置脚本中。

·可选关键字:TABLE 关键字是可选的,不影响执行逻辑。

三、清空数据并重置统计信息

以下示例展示了 TRUNCATE 如何在清空数据的同时重置统计信息。

— 1. 准备数据并收集统计信息CREATE TABLE truncate_demo (x INT);INSERT INTO truncate_demo VALUES (1), (2), (4), (8);– TCHouse-X 数据写入后可见性约为 10s,建议至少等待 10s 后再执行后续操作。COMPUTE STATS truncate_demo;– 查看统计信息:此时有 4 行数据SHOW TABLE STATS truncate_demo;– +——-+——–+——+——–+– | #Rows | #Files | Size | Format |– +——-+——–+——+——–+– | 4 | 1 | 420B | TCI |– +——-+——–+——+——–+– 2. 执行清空操作TRUNCATE TABLE truncate_demo;– 3. 验证结果:数据和统计信息均被清空SELECT COUNT(*) FROM truncate_demo; — 返回 0SHOW TABLE STATS truncate_demo;– +——–+——–+——+——–+– | #Rows | #Files | Size | Format |– +——–+——–+——+——–+– | -1 | 0 | 0B | TCI |– +——–+——–+——+——–+

四、在自动化脚本中使用 IF EXISTS

该子句允许脚本在表可能不存在的情况下继续运行而不中断。

— 即使 staging_table2 和 3 不存在,脚本也不会报错TRUNCATE TABLE IF EXISTS staging_table1;TRUNCATE TABLE IF EXISTS staging_table2;TRUNCATE TABLE IF EXISTS staging_table3;

五、TRUNCATE vs DELETE 快速对比

特性 TRUNCATE TABLE DELETE
操作粒度 全表清空 可根据条件精确删除 (WHERE)
性能 极高(直接物理删除文件) 较低(逐行或按主键范围删除)
主键要求 无要求,支持各类表 仅支持主键表
统计信息 自动重置 保留统计信息(需手动重置)
赞 (0)
上一篇 4天前
下一篇 4天前