ALTER INDEX
Pour faire passer l’index à l’état actif/inactif, reconstruisez l’index.
DSQL, ESQL.
ALTER INDEX indexname {ACTIVE | INACTIVE};
Paramètre | Description |
---|---|
indexname |
Nom de l’index. |
La commande ALTER INDEX
met l’index dans l’état actif/inactif.Il n’est pas possible de modifier la structure et l’ordre de tri des clés.
INACTIVE
-
En sélectionnant "INACTIF", l’index passe de l’état actif à l’état inactif. La mise en état d’inactivité d’un index est similaire en action à la commande
DROP INDEX
, sauf que la définition de l’index est stockée dans la base de données. Un index participant à une contrainte ne peut pas être rendu inactif.L’index actif ne peut être rendu inactif que si aucune requête n’utilise cet index, sinon l’erreur
object in use
est retournée.L’activation d’un index inactif est également sans danger.Cependant, si des transactions actives modifient la table, la transaction contenant l’instruction
ALTER INDEX
échouera si elle a l’attributNO WAIT
.Si la transaction est en modeWAIT
, elle attendra que les transactions concurrentes se terminent.D’un autre côté, si notre instruction
ALTER INDEX
commence à reconstruire l’index àCOMMIT
, alors les autres transactions modifiant cette table échoueront ou attendront en fonction de leurs attributsWAIT
/NO WAIT
.La même situation se produira lors de l’exécution deCREATE INDEX
.TipMettre un index dans un état inactif peut être utile lors de l’insertion, de la modification ou de la suppression en masse d’enregistrements de la table pour laquelle l’index est construit.
ACTIVE
-
En sélectionnant l’alternative
ACTIF
, l’index passe de l’état inactif à l’état actif. Lorsque l’index est déplacé d’inactif à actif — l’index est reconstruit.TipMême si l’index est dans l’état actif, la commande
ALTER INDEX … ACTIVE' reconstruit toujours l’index.Cette commande peut donc être utilisée dans le cadre de la maintenance de la base de données pour reconstruire les index créés automatiquement pour les contraintes.`PRIMARY KEY
,FOREIGN KEY
,UNIQUE
pour lesquels leALTER INDEX … INACTIVE
n’est pas possible.