截断分区

与截断表的操作类似,PolarDB PostgreSQL版(兼容Oracle)可以指定一个分区进行截断。本文介绍了其语法及示例。

语法说明

ALTER TABLE <table_name> TRUNCATE PARTITION <partition_name>;
ALTER TABLE <table_name> TRUNCATE SUBPARTITION <subpartition_name>;

使用以上TRUNCATE语法可以快速删除一组表中的所有行。它与每个表上的非限定DELETE具有相同的效果,但由于它实际上并不扫描表,因此速度更快。

此外,使用TRUNCATE语法删除行后,会立即回收磁盘空间,因此不需要后续的VACUUM操作。

示例

对p1分区进行截断:

CREATE TABLE hash_partitions_sales (deptno NUMBER, deptname VARCHAR(32))
     PARTITION BY HASH(deptno)
       (PARTITION p1 , PARTITION p2 ,
        PARTITION p3 , PARTITION p4 , PARTITION p5);

ALTER TABLE hash_partitions_sales TRUNCATE PARTITION p1 ;