ALTER INDEX
Перевод индекса в активное/неактивное состояние, перестройка индекса.
DSQL, ESQL.
ALTER INDEX indexname {ACTIVE | INACTIVE};
Параметр | Описание |
---|---|
indexname |
Имя индекса. |
Оператор ALTER INDEX
переводит индекс в активное/неактивное состояние.Возможность изменения структуры и порядка сортировки ключей этот оператор не предусматривает.
INACTIVE
-
При выборе опции
INACTIVE
, индекс переводится из активного в неактивное состояние. Перевод индекса в неактивное состояние по своему действию похоже на командуDROP INDEX
за исключением того, что определение индекса сохраняется в базе данных. Невозможно перевести в неактивное состояние индекс участвующий в ограничении.Активный индекс может быть отключен, только если отсутствуют запросы использующие этот индекс, иначе будет возвращена ошибка “object in use”.
Активация неактивного индекс также безопасна.Тем не менее, если есть активные транзакции, модифицирующие таблицу, то транзакция, содержащая оператор
ALTER INDEX
потерпит неудачу, если она имеет атрибутNO WAIT
.Если транзакция находится в режимеWAIT
, то она будет ждать завершения параллельных транзакций.С другой стороны, если наш оператор
ALTER INDEX
начинает перестраивать индекс наCOMMIT
, то другие транзакции, изменяющие эту таблицу, потерпят неудачу или будут ожидать в соответствии с ихWAIT
/NO WAIT
атрибутами.Та же самая ситуация будет и при выполненииCREATE INDEX
.TipПеревод индекса в неактивное состояние может быть полезен при массовой вставке, модификации или удалении записей из таблицы, для которой этот индекс построен.
ACTIVE
-
При выборе альтернативы
ACTIVE
индекс переводится из неактивного состояния в активное. При переводе индекса из неактивного состояния в активное — индекс перестраивается.TipДаже если индекс находится в активном состоянии оператор
ALTER INDEX … ACTIVE
всё равно перестраивает индекс.Таким образом, эту команду можно использовать как часть обслуживания БД для перестройки индексов, автоматически созданных для ограниченийPRIMARY KEY
,FOREIGN KEY
,UNIQUE
, для которых выполнение оператораALTER INDEX … INACTIVE
невозможно.