Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

ALTER INDEX

Изменяет определение индекса.

Синтаксис

ALTER INDEX [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER INDEX [ IF EXISTS ] <name> SET TABLESPACE <tablespace_name>

ALTER INDEX [ IF EXISTS ] <name> SET ( <storage_parameter> = <value> [, ...] )

ALTER INDEX [ IF EXISTS ] <name> RESET ( <storage_parameter>  [, ...] )

ALTER INDEX ALL IN TABLESPACE <name> [ OWNED BY <role_name> [, ... ] ]
  SET TABLESPACE <new_tablespace> [ NOWAIT ]

Описание

ALTER INDEX изменяет определение существующего индекса. Существует несколько форм:

  • RENAME — эта форма меняет имя индекса. Не влияет на хранимые данные.

  • SET TABLESPACE — эта форма меняет табличное пространство индекса на указанное табличное пространство и перемещает файлы данных, связанные с индексом, в новое табличное пространство. Чтобы изменить табличное пространство индекса, необходимо быть владельцем индекса и иметь привилегию CREATE в новом табличном пространстве. Все индексы в текущей базе данных, находящиеся в табличном пространстве, могут быть перемещены с использованием формы ALL IN TABLESPACE, которая заблокирует все индексы для перемещения, а затем переместит каждый из них. Эта форма также поддерживает OWNED BY, что позволит перемещать только индексы, принадлежащие указанным ролям. Если указана опция NOWAIT, команда завершится ошибкой, если не сможет немедленно получить все необходимые блокировки. Обратите внимание, что системные каталоги не будут перемещены этой командой, используйте ALTER DATABASE или явные вызовы ALTER INDEX, если это необходимо. См. также CREATE TABLESPACE.

  • SET ( <storage_parameter> = <value> [, …​ ] ) — эта форма изменяет один или несколько специфичных для метода индексирования параметров хранения для индекса. См. CREATE INDEX для получения подробной информации о доступных параметрах. Обратите внимание, что содержимое индекса не будет изменено немедленно этой командой; в зависимости от параметра вам может потребоваться перестроить индекс с помощью REINDEX, чтобы получить желаемый эффект.

  • RESET ( <storage_parameter> [, …​ ] ) — эта форма сбрасывает один или несколько специфичных для метода индексирования параметров хранения до их значений по умолчанию. Как и в случае с SET, может потребоваться REINDEX для полного обновления индекса.

Параметры

Параметр Описание

IF EXISTS

Не завершать действие ошибкой, если индекс не существует. В этом случае будет показано уведомление

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;

Изменить коэффициент заполнения (fill factor) индекса (при условии, что метод индексирования это поддерживает):

ALTER INDEX distributors SET (fillfactor = 75);
REINDEX INDEX distributors;

Совместимость

ALTER INDEX является расширением PostgreSQL.

См. также