云数据库 GAUSSDB-分区索引:示例

时间:2024-11-13 10:04:58

示例

  • 创建表
    gaussdb=# CREATE TABLE web_returns_p2
    (
        ca_address_sk INTEGER NOT NULL ,
        ca_address_id CHARACTER(16) NOT NULL ,
        ca_street_number CHARACTER(10) ,
        ca_street_name CHARACTER VARYING(60) ,
        ca_street_type CHARACTER(15) ,
        ca_suite_number CHARACTER(10) ,
        ca_city CHARACTER VARYING(60) ,
        ca_county CHARACTER VARYING(30) ,
        ca_state CHARACTER(2) ,
        ca_zip CHARACTER(10) ,
        ca_country CHARACTER VARYING(20) ,
        ca_gmt_offset NUMERIC(5,2) ,
        ca_location_type CHARACTER(20)
    )
    PARTITION BY RANGE (ca_address_sk)
    (
        PARTITION P1 VALUES LESS THAN(5000),
        PARTITION P2 VALUES LESS THAN(10000),
        PARTITION P3 VALUES LESS THAN(15000),
        PARTITION P4 VALUES LESS THAN(20000),
        PARTITION P5 VALUES LESS THAN(25000),
        PARTITION P6 VALUES LESS THAN(30000),
        PARTITION P7 VALUES LESS THAN(40000),
        PARTITION P8 VALUES LESS THAN(MAXVALUE)
    )
    ENABLE ROW MOVEMENT;
  • 创建索引
    • 创建分区表LOCAL索引tpcds_web_returns_p2_index1,不指定索引分区的名称。
      gaussdb=# CREATE INDEX tpcds_web_returns_p2_index1 ON web_returns_p2 (ca_address_id) LOCAL;
      当结果显示为如下信息,则表示创建成功。
      CREATE INDEX
    • 创建分区表LOCAL索引tpcds_web_returns_p2_index2,并指定索引分区的名称。
      gaussdb=# CREATE TABLESPACE example2 LOCATION '/home/omm/example2';
      CREATE TABLESPACE example3 LOCATION '/home/omm/example3';
      CREATE TABLESPACE example4 LOCATION '/home/omm/example4';
      
      gaussdb=# CREATE INDEX tpcds_web_returns_p2_index2 ON web_returns_p2 (ca_address_sk) LOCAL
      (
          PARTITION web_returns_p2_P1_index,
          PARTITION web_returns_p2_P2_index TABLESPACE example3,
          PARTITION web_returns_p2_P3_index TABLESPACE example4,
          PARTITION web_returns_p2_P4_index,
          PARTITION web_returns_p2_P5_index,
          PARTITION web_returns_p2_P6_index,
          PARTITION web_returns_p2_P7_index,
          PARTITION web_returns_p2_P8_index
      ) TABLESPACE example2;
      当结果显示为如下信息,则表示创建成功。
      CREATE INDEX
    • 创建分区表GLOBAL索引tpcds_web_returns_p2_global_index。
      gaussdb=# CREATE INDEX tpcds_web_returns_p2_global_index ON web_returns_p2 (ca_street_number) GLOBAL;
      当结果显示为如下信息,则表示创建成功。
      CREATE INDEX
    • 创建分类分区索引。
      指定分区名:
      gaussdb=# CREATE INDEX tpcds_web_returns_for_p1 ON web_returns_p2 (ca_address_id) LOCAL(partition ind_part for p1);

      指定分区键的值:

      gaussdb=# CREATE INDEX tpcds_web_returns_for_p2 ON web_returns_p2 (ca_address_id) LOCAL(partition ind_part for (5000));
      当结果显示为如下信息,则表示创建成功。
      CREATE INDEX
  • 修改索引分区的表空间
    • 修改索引分区web_returns_p2_P2_index的表空间为example1。
      gaussdb=# ALTER INDEX tpcds_web_returns_p2_index2 MOVE PARTITION web_returns_p2_P2_index TABLESPACE example1;
      当结果显示为如下信息,则表示修改成功。
      ALTER INDEX
    • 修改索引分区web_returns_p2_P3_index的表空间为example2。
      gaussdb=# ALTER INDEX tpcds_web_returns_p2_index2 MOVE PARTITION web_returns_p2_P3_index TABLESPACE example2;
      当结果显示为如下信息,则表示修改成功。
      ALTER INDEX
  • 重命名索引分区
    • 执行如下命令对索引分区web_returns_p2_P8_index重命名web_returns_p2_P8_index_new。
      gaussdb=# ALTER INDEX tpcds_web_returns_p2_index2 RENAME PARTITION web_returns_p2_P8_index TO web_returns_p2_P8_index_new;
      当结果显示为如下信息,则表示重命名成功。
      ALTER INDEX
  • 查询索引
    • 执行如下命令查询系统和用户定义的所有索引。
      gaussdb=# SELECT RELNAME FROM PG_CLASS WHERE RELKIND='i' or RELKIND='I';
    • 执行如下命令查询指定索引的信息。
      gaussdb=# \di+ tpcds_web_returns_p2_index2
  • 删除索引
    gaussdb=# DROP INDEX tpcds_web_returns_p2_index1;
    当结果显示为如下信息,则表示删除成功。
    DROP INDEX
  • 清理示例
    gaussdb=# DROP TABLE web_returns_p2;
support.huaweicloud.com/fg-gaussdb-cent-v8/gaussdb-48-0086.html