Files
oceanbase/docs/docs-cn/6.administrator-guide/4.database-object-management-1/1.manage-tables/7.clear-table.md
2022-02-10 14:51:49 +08:00

1.8 KiB

清空表

当表中的数据不再使用时,可以删除表中的所有行,即清空该表。

OceanBase 数据库支持使用 TRUNCATE TABLEDELETE FROM 语句清空指定表,但是保留表结构,包括表中定义的分区信息。从逻辑上说,TRUNCATE TABLE 语句与用于删除所有行的 DELETE FROM 语句的执行结果相同。

使用 TRUNCATE TABLE 语句

TRUNCATE TABLE 语句提供了一种快速、有效删除表中所有行的方法,同时 TRUNCATE TABLE 语句是一个 DDL 语句,不会产生任何回滚信息。

执行 TRUNCATE TABLE 语句需要具备该表的删除和创建权限。

obclient>TRUNCATE TABLE table_name;

使用 DELETE FROM 语句

也可以使用 DELETE FROM 语句删除表中的行。

示例如下:

obclient>DELETE FROM table_name

使用 DELETE FROM 语句清空表时,如果表有很多行,会消耗较多系统资源。

TRUNCATE TABLE 语句与 DELETE FROM语句的差异

TRUNCATE TABLE 语句与 DELETE FROM 语句的差异如下:

  • TRUNCATE TABLE 操作会删除并重新创建表,比一行一行地删除行要快很多。

  • TRUNCATE TABLE 语句的执行结果显示影响行数始终为 0 行。

  • 使用 TRUNCATE TABLE 语句时,表管理程序不会记录最后被使用的 AUTO_INCREMENT 值,但是会从头开始计数。

  • 不支持在进行事务处理和表锁定的过程中执行 TRUNCATE TABLE 操作。

  • 只要表定义文件合法,就可以使用 TRUNCATE TABLE 语句将表重新创建为一个空表,即使数据或索引文件已经被破坏。