FirebirdSQL logo

ALTER INDEX

Objectif

Pour faire passer l’index à l’état actif/inactif, reconstruisez l’index.

Disponible en

DSQL, ESQL.

Syntaxe
ALTER INDEX indexname {ACTIVE | INACTIVE};
Table 1. Paramètres de la commande ALTER INDEX.
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’attribut NO WAIT.Si la transaction est en mode WAIT, 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 attributs WAIT/NO WAIT.La même situation se produira lors de l’exécution de CREATE INDEX.

Tip

Mettre 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.

Tip

Mê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 le ALTER INDEX …​ INACTIVE n’est pas possible.

Utilisation de ALTER INDEX pour les index de restriction

La conversion forcée des index créés pour les contraintes PRIMARY KEY, FOREIGN KEY et UNIQUE n’est pas autorisée.Cependant, l’exécution de la commande ALTER INDEX …​ INACTIVE fonctionne aussi bien pour les index de contraintes que les autres outils pour les autres index.

docnext count = 9

Qui peut faire un `ALTER INDEX' ?

L’opérateur ALTER INDEX peut être exécuté :

  • Administrateurs

  • Le propriétaire de la table pour laquelle l’index est construit ;

  • Utilisateurs avec le privilège ALTER ANY TABLE.

Exemples

Example 1. Index conversion à un état inactif
ALTER INDEX IDX_UPDATER INACTIVE;
Example 2. Retour de l’index à l’état actif
ALTER INDEX IDX_UPDATER ACTIVE;
Voir aussi :

CREATE INDEX, DROP INDEX.

DROP INDEX

Destination

Pour supprimer un index de la base de données.

Disponible en

DSQL, ESQL.

Syntaxe
DROP INDEX indexname
Table 1. Paramètres de la commande DROP INDEX.
Paramètre Description

indexname

Nom de l’index

L’instruction DROP INDEX supprime un index existant de la base de données.S’il existe des dépendances pour un index existant (s’il est utilisé dans une contrainte), la suppression ne sera pas effectuée.

Qui peut supprimer l’index ?

La commande DROP INDEX peut être exécutée :

  • Administrateurs

  • Le propriétaire de la table pour laquelle l’index est construit ;

  • Utilisateurs avec le privilège ALTER ANY TABLE.

Exemples

Example 1. Suppression d’un index
DROP INDEX IDX_UPDATER;
Voir aussi :

CREATE INDEX, ALTER INDEX.

SET STATISTICS

Objectif

Nouveau calcul de la sélectivité de l’indice.

Disponible en

DSQL, ESQL.

Syntaxe
SET STATISTICS INDEX indexname

Paramètres pour la commande SET STATISTICS.

Paramètre Description

indexname

Nom de l’index.

L’opérateur SET STATISTICS recalcule la valeur de sélectivité pour l’index spécifié..

Sélectivité de l’indice

La sélectivité de l’index est une estimation du nombre de lignes qui peuvent être sélectionnées lors de la recherche de chaque valeur d’index.Un index unique a une sélectivité maximale, car il ne peut sélectionner plus d’une ligne pour chaque valeur de clé d’index.La pertinence de la sélectivité de l’index est importante pour sélectionner le plan d’exécution de requête le plus optimal pour l’optimiseur.

La sélectivité de l’index peut devoir être recalculée après une insertion, une modification ou une suppression massive d’un grand nombre d’enregistrements dans une table, car elle devient non pertinente.

Note

Notez que dans Firebird les statistiques de l’index ne sont pas automatiquement recalculées après des changements massifs de données, ni dans aucune autre condition.Lorsqu’un index est créé (CREATE) ou activé (ALTER INDEX ACTIVE), les statistiques de l’index sont totalement cohérentes avec son contenu.

Le recalcul de la sélectivité de l’indice peut être effectué sous un parallélisme élevé sans risque de l’endommager.Cependant, il faut garder à l’esprit qu’avec un parallélisme élevé, les statistiques calculées peuvent devenir obsolètes dès que l’exécution de l’opérateur est terminée. SET STATISTICS.

Qui peut mettre à jour les statistiques ?

L’instruction SET STATISTICS peut être exécutée :

  • Administrateurs

  • Le propriétaire de la table pour laquelle l’index est construit ;

  • Utilisateurs avec le privilège ALTER ANY TABLE.

Exemples

Example 1. Recalcul de la sélectivité de l’indice IDX_UPDATER
SET STATISTICS INDEX IDX_UPDATER;
Voir aussi :

CREATE INDEX, ALTER INDEX.