Изменение индекса

Изменение индекса

Активация/деактивация

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

Другое использование этого оператора - служебные действия. В нормальных условиях распределение значений меняется постепенно, а при некоторых рабочих условиях - более часто.

Структуры двоичных деревьев, в которых хранятся индексы, могут стать разбалансированными. Переключение индекса из активного в неактивное состояние и обратно пересоздает и балансирует[54] индекс.

Синтаксис:

ALTER INDEX имя-индекса INACTIVE | ACTIVE ;

Ошибка "индекс находится в использовании"

Индекс, используемый в транзакции, не может быть изменен или удален, пока не завершится использующая его транзакция. Такие попытки будут иметь различные результаты в зависимости от установок блокировки активной транзакции:

* в транзакции WAIT оператор ALTER INDEX ожидает, пока не завершится транзакция;

* с транзакции NOWAIT Firebird возвращает ошибку.

Информацию об установках блокировок транзакций см. в разд. "Разрешение блокировок" главы 26.