
# ALTER INDEX
#### 功能描述
ALTER INDEX用于修改现有索引的定义。
它有几种子形式：
- IF EXISTS 如果指定的索引不存在，则发出一个notice而不是error。
  
- RENAME TO 只改变索引的名称。对存储的数据没有影响。
  
- SET TABLESPACE 这个选项会改变索引的表空间为指定表空间，并且把索引相关的数据文件移动到新的表空间里。
  
- SET ( { STORAGE_PARAMETER = value } \[, ...\] ) 改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改，根据参数的不同，可能需要使用REINDEX重建索引来获得期望的效果。
  
- RESET ( { storage_parameter } \[, ...\] ) 重置索引的一个或多个索引方法特定的存储参数为缺省值。与SET一样，可能需要使用REINDEX来完全更新索引。
  
- \[ MODIFY PARTITION index_partition_name \] UNUSABLE 用于设置表或者索引分区上的索引不可用。
  
- REBUILD \[ PARTITION index_partition_name \] 用于重建表或者索引分区上的索引。
  
- RENAME PARTITION 用于重命名索引分区
  
- MOVE PARTITION 用于修改索引分区的所属表空间。
  
 
#### 注意事项
索引的所有者或者拥有索引所在表的INDEX权限的用户或者被授予了ALTER ANY INDEX权限的用户有权限执行此命令，系统管理员默认拥有此权限。
#### 语法格式
- 重命名表索引的名称。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      RENAME TO new_name;
  ```
  

- 修改表索引的所属空间。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      SET TABLESPACE tablespace_name;
  ```
  

- 修改表索引的存储参数。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      SET ( {storage_parameter = value} [, ... ] );
  ```
  

- 重置表索引的存储参数。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      RESET ( storage_parameter [, ... ] ) ;
  ```
  

- 设置表索引或索引分区不可用。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      [ MODIFY PARTITION index_partition_name ] UNUSABLE;
  ```
  

- 重建表索引或索引分区。
  ```
  ALTER INDEX index_name 
      REBUILD [ PARTITION index_partition_name ];
  ```
  

- 重命名索引分区。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      RENAME PARTITION index_partition_name TO new_index_partition_name;
  ```
  

- 修改索引分区的所属表空间。
  ```
  ALTER INDEX [ IF EXISTS ] index_name 
      MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
  ```
  
 
#### 参数说明
- **index_name**
  要修改的索引名。
  
- **new_name**
  新的索引名。
  取值范围：字符串，且符合[标识符命名规范](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0319.html#ZH-CN_TOPIC_0000002235270221__zh-cn_topic_0000002235098221_section14873217506)。
  
- **tablespace_name**
  表空间的名称。
  取值范围：已存在的表空间。
  
- **storage_parameter**
  索引方法特定的参数名。ACTIVE_PAGES表示索引的页面数量，可能比实际的物理文件页面少，可以用于优化器调优。目前只对ustore的分区表 local索引生效，且会被vacuum、analyze更新（包括auto vacuum）。不建议用户手动设置该参数，该参数在分布式下无效。
  
- **value**
  索引方法特定的存储参数的新值。根据参数的不同，这可能是一个数字或单词。
  
- **new_index_partition_name**
  新索引分区名。
  
- **index_partition_name**
  索引分区名。
  
- **new_tablespace**
  新表空间。
  
 
#### 示例
请参见CREATE INDEX的[示例](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0523.html#ZH-CN_TOPIC_0000002235390377__zh-cn_topic_0000002200139008_zh-cn_topic_0059777455_s985289833081489e9d77c485755bd362)。
#### 相关链接
[CREATE INDEX](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0523.html#ZH-CN_TOPIC_0000002235390377)，[DROP INDEX](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0569.html#ZH-CN_TOPIC_0000002200350110)，[REINDEX](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0618.html#ZH-CN_TOPIC_0000002200350162)
