清空表 
========================

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

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

使用 TRUNCATE TABLE 语句 
-----------------------------------------

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

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

```sql
obclient>TRUNCATE TABLE table_name;
```



使用 DELETE FROM 语句 
--------------------------------------

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

示例如下：

```sql
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` 语句将表重新创建为一个空表，即使数据或索引文件已经被破坏。

  



