×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.14. ALTER INDEX

6.1.14. ALTER INDEX

ALTER INDEX — изменение определения индекса

Синтаксис

ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
ALTER INDEX name ATTACH PARTITION index_name
ALTER INDEX name [ NO ] DEPENDS ON EXTENSION extension_name
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
ALTER INDEX [ IF EXISTS ] name ALTER [ COLUMN ] column_number
    SET STATISTICS integer
ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
    SET TABLESPACE new_tablespace [ NOWAIT ]

Описание

Команда ALTER INDEX изменяет определение существующего индекса. Существует несколько описанных ниже подформ. Обратите внимание, что требуемый уровень блокировки может отличаться для каждой подформы. Если не указано иное, удерживается блокировка ACCESS EXCLUSIVE. Когда перечислено несколько подкоманд, удерживаемая блокировка будет самой строгой из требуемых любой подкомандой.

RENAME

Форма RENAME изменяет имя индекса. Если индекс связан с ограничением таблицы (либо UNIQUE, PRIMARY KEY, либо EXCLUDE), ограничение также переименовывается. На хранимые данные это не влияет.

Переименование индекса захватывает блокировку SHARE UPDATE EXCLUSIVE.

SET TABLESPACE

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

ATTACH PARTITION index_name

Делает указанный индекс (возможно, с указанием схемы) присоединённым к изменяемому индексу. Указанный индекс должен находиться на секции таблицы, содержащей изменяемый индекс, и иметь эквивалентное определение. Присоединённый индекс не может быть удалён сам по себе и будет автоматически удалён при удалении его родительского индекса.

DEPENDS ON EXTENSION extension_name
NO DEPENDS ON EXTENSION extension_name

Эта форма помечает индекс как зависимый от расширения или, если указано NO, как больше не зависящий от этого расширения. Индекс, помеченный как зависимый от расширения, автоматически удаляется при удалении расширения.

SET ( storage_parameter [= value] [, ... ] )

Эта форма изменяет один или несколько специфичных для метода индексации параметров хранения для индекса. Подробности о доступных параметрах см. в CREATE INDEX. Обратите внимание, что содержимое индекса не будет немедленно изменено этой командой; в зависимости от параметра вам может потребоваться перестроить индекс с помощью REINDEX, чтобы получить желаемый эффект.

RESET ( storage_parameter [, ... ] )

Эта форма сбрасывает один или несколько специфичных для метода индексации параметров хранения до их значений по умолчанию. Как и в случае с SET, для полного обновления индекса может потребоваться REINDEX.

ALTER [ COLUMN ] column_number SET STATISTICS integer

Эта форма устанавливает цель сбора статистики по столбцу для последующих операций ANALYZE, однако может использоваться только для столбцов индекса, определённых как выражение. Поскольку выражения не имеют уникального имени, мы ссылаемся на них, используя порядковый номер столбца индекса. Цель может быть установлена в диапазоне от 0 до 10000; альтернативно, установите её в -1, чтобы вернуться к использованию системной цели сбора статистики по умолчанию (default_statistics_target). Для получения дополнительной информации об использовании статистики планировщиком запросов Digital Q.DataBase обратитесь к разделу Раздел 2.11.2.

Параметры

IF EXISTS

Не выдавать ошибку, если индекс не существует. В этом случае выдаётся уведомление.

column_number

Порядковый номер относится к порядковой (слева направо) позиции столбца индекса.

name

Имя (возможно, с указанием схемы) изменяемого индекса.

new_name

Новое имя для индекса.

tablespace_name

Табличное пространство, в которое будет перемещён индекс.

extension_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;

Установить цель сбора статистики для индексного выражения:

CREATE INDEX coord_idx ON measured (x, y, (z + t));
ALTER INDEX coord_idx ALTER COLUMN 3 SET STATISTICS 1000;

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

ALTER INDEX является расширением Digital Q.DataBase.

Смотрите также

CREATE INDEX, REINDEX
Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению