云数据库 GAUSSDB-CREATE TABLE PARTITION:范围分区示例

时间:2024-11-02 18:45:39

范围分区示例

  • VALUES LESS THAN
    --创建表空间。
    CREATE TABLESPACE tbs_test_range1_p1 RELATIVE LOCATION 'tbs_test_range1/tablespace_1';
    CREATE TABLESPACE tbs_test_range1_p2 RELATIVE LOCATION 'tbs_test_range1/tablespace_2';
    CREATE TABLESPACE tbs_test_range1_p3 RELATIVE LOCATION 'tbs_test_range1/tablespace_3';
    CREATE TABLESPACE tbs_test_range1_p4 RELATIVE LOCATION 'tbs_test_range1/tablespace_4';
    
    --创建分区表test_range1。
    CREATE TABLE test_range1(
        id INT, 
        info VARCHAR(20)
    ) PARTITION BY RANGE (id) (
        PARTITION p1 VALUES LESS THAN (200) TABLESPACE tbs_test_range1_p1,
        PARTITION p2 VALUES LESS THAN (400) TABLESPACE tbs_test_range1_p2,
        PARTITION p3 VALUES LESS THAN (600) TABLESPACE tbs_test_range1_p3,
        PARTITION pmax VALUES LESS THAN (MAXVALUE) TABLESPACE tbs_test_range1_p4
    );
    
    --插入1000条数据
    INSERT INTO test_range1 VALUES(GENERATE_SERIES(1,1000),'abcd');
    
    --查看p1分区的行数199条,[1,200)。
    SELECT COUNT(*) FROM test_range1 PARTITION (p1);
     count 
    -------
       199
    (1 row)
    
    --查看p2分区的行数200条,[200,400)。
    SELECT COUNT(*) FROM test_range1 PARTITION (p2);
     count 
    -------
       200
    (1 row)
    
    --查看分区信息。
    SELECT a.relname, a.boundaries, b.spcname  
    FROM pg_partition a, pg_tablespace b 
    WHERE a.reltablespace = b.oid AND a.parentid = 'test_range1'::regclass;
     relname | boundaries |      spcname       
    ---------+------------+--------------------
     p1      | {200}      | tbs_test_range1_p1
     p2      | {400}      | tbs_test_range1_p2
     p3      | {600}      | tbs_test_range1_p3
     pmax    | {NULL}     | tbs_test_range1_p4
    (4 rows)
    
    --删除
    DROP TABLE test_range1;
    DROP TABLESPACE tbs_test_range1_p1;
    DROP TABLESPACE tbs_test_range1_p2;
    DROP TABLESPACE tbs_test_range1_p3;
    DROP TABLESPACE tbs_test_range1_p4;
  • START END
    --创建分区表。
    CREATE TABLE test_range2(
        id INT, 
        info VARCHAR(20)
    ) PARTITION BY RANGE (id) (
        PARTITION p1 START(1) END(600) EVERY(200),    
        PARTITION p2 START(600) END(800),
        PARTITION pmax START(800) END(MAXVALUE)
    );
    
    --查看分区信息。
    SELECT relname, boundaries FROM pg_partition WHERE parentid = 'test_range2'::regclass AND parttype = 'p' ORDER BY 1;
     relname | boundaries 
    ---------+------------
     p1_0    | {1}
     p1_1    | {201}
     p1_2    | {401}
     p1_3    | {600}
     p2      | {800}
     pmax    | {NULL}
    (6 rows)
    
    --删除。
    DROP TABLE test_range2;
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0584.html