云数据库 GAUSSDB-ALTER INDEX:示例

时间:2024-11-01 17:13:42

示例

  • 重命名索引。
    --创建test1表并为其创建索引。
    gaussdb=# CREATE TABLE test1(col1 int, col2 int);
    gaussdb=# CREATE INDEX aa ON test1(col1);
    
    --将索引aa重命名为idx_test1_col1。
    gaussdb=# ALTER INDEX aa RENAME TO idx_test1_col1;
    
    --查询test1表上的索引信息。
    gaussdb=# SELECT tablename,indexname,tablespace FROM pg_indexes WHERE tablename = 'test1';
     tablename |   indexname    | tablespace 
    -----------+----------------+------------
     test1     | idx_test1_col1 | 
    (1 row)
  • 修改索引所属表空间。
    --创建表空间tbs_index1。
    gaussdb=# CREATE TABLESPACE tbs_index1 RELATIVE LOCATION 'tablespace1/tbs_index1';
    
    --修改索引idx_test1_col1的所属表空间为tbs_index1。
    gaussdb=# ALTER INDEX IF EXISTS idx_test1_col1 SET TABLESPACE tbs_index1;
    
    --查询test1表上的索引信息。
    gaussdb=# SELECT tablename,indexname,tablespace FROM pg_indexes WHERE tablename = 'test1';
     tablename |   indexname    | tablespace 
    -----------+----------------+------------
     test1     | idx_test1_col1 | tbs_index1
    (1 row)
  • 修改与重置索引存储参数。
    --查看索引idx_test1_col1详细信息。
    gaussdb=# \di idx_test1_col1                         List of relations
     Schema |      Name      | Type  | Owner | Table | Storage 
    --------+----------------+-------+-------+-------+---------
     public | idx_test1_col1 | index | omm   | test1 | 
    (1 row)
    
    --修改索引idx_test1_col1 的填充因子。
    gaussdb=# ALTER INDEX IF EXISTS idx_test1_col1 SET (FILLFACTOR = 70);
    --查看索引idx_test1_col1详细信息。
    gaussdb=# \di idx_test1_col1
                             List of relations
     Schema |      Name      | Type  | Owner | Table |     Storage     
    --------+----------------+-------+-------+-------+-----------------
     public | idx_test1_col1 | index | omm   | test1 | {fillfactor=70}
    (1 row)
    --重置索引idx_test1_col1 的存储参数。
    gaussdb=# ALTER INDEX IF EXISTS idx_test1_col1 RESET (FILLFACTOR);
    --查看索引idx_test1_col1详细信息。
    gaussdb=# \di idx_test1_col1
                         List of relations
     Schema |      Name      | Type  | Owner | Table | Storage 
    --------+----------------+-------+-------+-------+---------
     public | idx_test1_col1 | index | omm   | test1 | 
    (1 row)
  • 修改索引可用性。
    --设置索引idx_test1_col1不可用。
    gaussdb=# ALTER INDEX IF EXISTS idx_test1_col1 UNUSABLE;
    --查看索引idx_test1_col1的可用性。
    gaussdb=# SELECT indisusable FROM pg_index WHERE indexrelid = 'idx_test1_col1'::regclass;
     indisusable 
    -------------
     f
    (1 row)
    
    --重建索引idx_test1_col1。
    gaussdb=# ALTER INDEX idx_test1_col1 REBUILD;
    --查看索引idx_test1_col1的可用性。
    gaussdb=# SELECT indisusable FROM pg_index WHERE indexrelid = 'idx_test1_col1'::regclass;
     indisusable 
    -------------
     t
    (1 row)
    
    --删除。
    gaussdb=# DROP INDEX idx_test1_col1;
    gaussdb=# DROP TABLE test1;
    gaussdb=# DROP TABLESPACE tbs_index1;
  • 重命名索引分区。
    --创建分区表test2。
    gaussdb=# CREATE TABLE test2(col1 int, col2 int) PARTITION BY RANGE (col1)(
        PARTITION p1 VALUES LESS THAN (100),
        PARTITION p2 VALUES LESS THAN (200)
    );
    --创建分区索引。
    gaussdb=# CREATE INDEX idx_test2_col1 ON test2(col1) LOCAL(
        PARTITION p1,
        PARTITION p2
    );
    --重命名索引分区。
    gaussdb=# ALTER INDEX idx_test2_col1 RENAME PARTITION p1 TO p1_test2_idx;
    gaussdb=# ALTER INDEX idx_test2_col1 RENAME PARTITION p2 TO p2_test2_idx;
    
    --查询索引idx_test2_col1分区的名称。
    gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_test2_col1'::regclass;
       relname    
    --------------
     p1_test2_idx
     p2_test2_idx
    (2 rows)
  • 修改索引分区的所属表空间。
    --创建表空间tbs_index2与tbs_index3。
    gaussdb=# CREATE TABLESPACE tbs_index2 RELATIVE LOCATION 'tablespace1/tbs_index2';
    gaussdb=# CREATE TABLESPACE tbs_index3 RELATIVE LOCATION 'tablespace1/tbs_index3';
    
    --修改索引idx_test2_col1分区的所属表空间。
    gaussdb=# ALTER INDEX idx_test2_col1 MOVE PARTITION p1_test2_idx TABLESPACE tbs_index2;
    gaussdb=# ALTER INDEX idx_test2_col1 MOVE PARTITION p2_test2_idx TABLESPACE tbs_index3;
    
    --查询索引idx_test2_col1分区的所属表空间。
    gaussdb=# SELECT t1.relname index_name, 
           t2.spcname tablespace_name
    FROM pg_partition t1, pg_tablespace t2
    WHERE t1.parentid = 'idx_test2_col1'::regclass AND
          t1.reltablespace = t2.oid;
      index_name  | tablespace_name 
    --------------+-----------------
     p1_test2_idx | tbs_index2
     p2_test2_idx | tbs_index3
    (2 rows)
    
    --删除。
    gaussdb=# DROP INDEX idx_test2_col1;
    gaussdb=# DROP TABLE test2;
    gaussdb=# DROP TABLESPACE tbs_index2;
    gaussdb=# DROP TABLESPACE tbs_index3;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0491.html