ALTER INDEX

From PostgreSQL wiki
Jump to navigationJump to search
名字

ALTER INDEX -- 改变一个索引的定义

语法概要
   ALTER INDEX name RENAME TO new_name
   ALTER INDEX name SET TABLESPACE tablespace_name
   ALTER INDEX name SET ( storage_parameter = value [, ... ] )
   ALTER INDEX name RESET ( storage_parameter [, ... ] )
描述

ALTER INDEX 改变一个现有索引的定义。 它有几种子形式:

RENAME
RENAME 改变索引的名字。对存储的数据没有影响。
SET TABLESPACE
这种形式改变索引的表空间为指定表空间,并且把索引相关的数据文件移动到新的表空间里。 参见 CREATE TABLESPACE
SET ( storage_parameter = value [, ... ] )
这种形式改变索引的一个或多个特定该索引算法的存储参数。可用参数的细节可参见CREATE INDEX。注意,命令执行后,索引内容可能不会立即起作用;取决于你设置的参数,可能需要用REINDEX命令重建索引才能体现参数修改后的效果。
RESET ( storage_parameter [, ... ] )
这种形式重置索引的一个或多个特定该索引算法的存储参数为缺省值。就如同SET子句一样,可能需要使用REINDEX重建整个索引。
参数
name
要修改的已有索引的名字(可以有模式修饰)。
new_name
索引的新名字。
tablespace_name
索引将移动到的表空间的名字。
storage_parameter
特定索引算法的存储参数的名字。
value
特定索引算法的存储参数的新值。根据不同的参数,值可以是数值或者单词。
注意

这些操作也可以用 ALTER TABLE 命令完成。 ALTER INDEX 实际上只是 ALTER TABLE 应用于索引的形式的一个别名。

以前还有一个 ALTER INDEX OWNER 变种, 但是现在忽略了(带一个警告)。索引的所有者必须和其表的所有者一样。 改变该表的所有者自动改变索引的所有者。

修改任何系统部分的表索引的操作都是不允许的。

示例

重命名一个现有的索引:

   ALTER INDEX distributors RENAME TO suppliers;

把一个索引移动到另外一个表空间:

   ALTER INDEX distributors SET TABLESPACE fasttablespace;

修改一个索引的填充因子(假设这个索引方法支持这个设置):

   ALTER INDEX distributors SET (fillfactor = 75);
   REINDEX INDEX distributors;
兼容性

ALTER INDEX 是一个 PostgreSQL 的扩展。

参见

CREATE INDEX, REINDEX