ALTER INDEX
功能描述
ALTER INDEX用于修改现有索引的定义。
注意事项
- 只有索引的所有者有权限执行此命令,系统管理员默认拥有此权限。
语法格式
- 重命名表索引的名字,支持新的索引名字前带有原索引所在的schema名,但是不支持同时修改schema名。
1 2 3 4
ALTER INDEX [ IF EXISTS ] index_name RENAME TO new_name; ALTER INDEX [ IF EXISTS ] index_name RENAME TO schema.new_name;
- 修改表索引的存储参数。
1 2
ALTER INDEX [ IF EXISTS ] index_name SET ( {storage_parameter = value} [, ... ] );
- 修改索引的状态标记。
1 2
ALTER INDEX [ IF EXISTS ] index_name SET ( {invisible = value} [, ... ] );
- 重置表索引的存储参数。
1 2
ALTER INDEX [ IF EXISTS ] index_name RESET ( storage_parameter [, ... ] ) ;
- 设置表索引或索引分区不可用。
1 2
ALTER INDEX [ IF EXISTS ] index_name [ MODIFY PARTITION index_partition_name ] UNUSABLE;
列存表不支持该语法。
- 重建表索引或索引分区。
1 2
ALTER INDEX index_name REBUILD [ PARTITION index_partition_name ][WITHOUT UNUSABLE];
- 重命名索引分区。
1 2
ALTER INDEX [ IF EXISTS ] index_name RENAME PARTITION index_partition_name TO new_index_partition_name;
PG_OBJECT系统表记录索引最后修改时间时不支持对该语法的记录。
- 添加,修改索引的注释。
1 2
ALTER INDEX [ IF EXISTS ] index_name COMMENT 'text';
- 删除索引的注释。
1 2 3 4
ALTER INDEX [ IF EXISTS ] index_name COMMENT ''; ALTER INDEX [ IF EXISTS ] index_name COMMENT NULL;
参数说明
- IF EXISTS
如果指定的索引不存在,则发出一个notice而不是error。
- RENAME TO
只改变索引的名字。对存储的数据没有影响。
- SET ( { STORAGE_PARAMETER = value } [, ...] )
改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同,可能需要使用REINDEX重建索引来获得期望的效果。
- RESET ( { storage_parameter } [, ...] )
重置索引的一个或多个索引方法特定的存储参数为缺省值。与SET一样,可能需要使用REINDEX来完全更新索引。
- [ MODIFY PARTITION index_partition_name ] UNUSABLE
用于设置表或者索引分区上的索引不可用。
- REBUILD [ PARTITION index_partition_name ]
用于重建表或者索引分区上的索引。
- WITHOUT UNUSABLE
重建表或者索引分区上的索引时不重建状态为UNUSABLE的索引。该参数仅8.3.0.100及以上集群版本支持。
- RENAME PARTITION
用于重命名索引分区。
- COMMENT comment_text
用于添加,修改或删除索引的注释。
- index_name
要修改的索引名。
- new_name
新的索引名。
取值范围:字符串,且符合标识符命名规范。
- storage_parameter
索引方法特定的参数名。
- invisible
控制优化器是否生成索引扫描相关计划。
取值范围:
- ON表示不生成索引扫描相关计划。
- OFF表示生成索引扫描相关计划。
默认值:OFF
- value
索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。
- new_index_partition_name
新索引分区名。
- index_partition_name
索引分区名。
- comment_text
索引的注释信息。
示例
重命名现有的索引ds_ship_mode_t1_index1为tpcds.ds_ship_mode_t1_index5,新的索引名字前ds_ship_mode_t1_index5带有原索引所在的schema名tpcds:
1
|
ALTER INDEX tpcds.ds_ship_mode_t1_index1 RENAME TO tpcds.ds_ship_mode_t1_index5; |
设置索引ds_ship_mode_t1_index2不可用:
1
|
ALTER INDEX tpcds.ds_ship_mode_t1_index2 UNUSABLE; |
重建索引ds_ship_mode_t1_index2:
1
|
ALTER INDEX tpcds.ds_ship_mode_t1_index2 REBUILD; |
重命名分区表索引:
1
|
ALTER INDEX tpcds.ds_customer_address_p1_index2 RENAME PARTITION CA_ADDRESS_SK_index1 TO CA_ADDRESS_SK_index4; |
修改索引的注释:
1
|
ALTER INDEX tpcds.ds_customer_address_p1_index2 COMMENT 'comment_ds_customer_address_p1_index2'; |