ALTER INDEX
功能描述
ALTER INDEX用于修改现有索引的定义。
它有几种子形式:
- IF EXISTS
 - RENAME TO
 - SET TABLESPACE
 - SET ( { STORAGE_PARAMETER = value } [, ...] )
    
改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同,可能需要使用REINDEX重建索引来获得期望的效果。
 - RESET ( { storage_parameter } [, ...] )
 - [ MODIFY PARTITION index_partition_name ] UNUSABLE
 - REBUILD [ PARTITION index_partition_name ]
 - RENAME PARTITION
 - MOVE PARTITION
 
注意事项
索引的所有者或者拥有索引所在表的INDEX权限的用户或者被授予了ALTER ANY INDEX权限的用户有权限执行此命令,系统管理员默认拥有此权限。
语法格式
- 重命名表索引的名称。
    
1 2
ALTER INDEX [ IF EXISTS ] index_name RENAME TO new_name;
 
- 修改表索引的所属空间。
    
1 2
ALTER INDEX [ IF EXISTS ] index_name SET TABLESPACE tablespace_name;
 
- 修改表索引的存储参数。
    
1 2
ALTER INDEX [ IF EXISTS ] index_name SET ( {storage_parameter = 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 ];
 
- 重命名索引分区。
    
1 2
ALTER INDEX [ IF EXISTS ] index_name RENAME PARTITION index_partition_name TO new_index_partition_name;
 
- 修改索引分区的所属表空间。
    
1 2
ALTER INDEX [ IF EXISTS ] index_name MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
 
参数说明
- index_name
    
要修改的索引名。
 - new_name
    
新的索引名。
取值范围:字符串,且符合标识符命名规范。
 - tablespace_name
    
表空间的名称。
取值范围:已存在的表空间。
 - storage_parameter
    
索引方法特定的参数名。ACTIVE_PAGES表示索引的页面数量,可能比实际的物理文件页面少,可以用于优化器调优。目前只对ustore的分区表 local索引生效,且会被vacuum、analyze更新(包括auto vacuum)。不建议用户手动设置该参数,该参数在分布式下无效。
 - value
    
索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。
 - new_index_partition_name
    
新索引分区名。
 - index_partition_name
    
索引分区名。
 - new_tablespace
    
新表空间。
 
示例
请参见CREATE INDEX的示例。