ALTER INDEX — Modifier la définition d'un index
ALTER INDEX [ IF EXISTS ]nom
RENAME TOnouveau_nom
ALTER INDEX [ IF EXISTS ]nom
SET TABLESPACEnom_tablespace
ALTER INDEXnom
ATTACH PARTITIONnom_index
ALTER INDEXnom
[ NO ] DEPENDS ON EXTENSIONnom_extension
ALTER INDEX [ IF EXISTS ]nom
SET (paramètre_stockage
[=valeur
] [, ... ] ) ALTER INDEX [ IF EXISTS ]nom
RESET (paramètre_stockage
[, ... ] ) ALTER INDEX [ IF EXISTS ]nom
ALTER [ COLUMN ]numéro_colonne
SET STATISTICSinteger
ALTER INDEX ALL IN TABLESPACEnom
[ OWNED BYnom_rôle
[, ... ] ] SET TABLESPACEnouveau_tablespace
[ NOWAIT ]
ALTER INDEX
modifie la définition d'un index. Il y a
plusieurs variantes décrites ci-dessous. Notez que le niveau de verrouillage
requis peut différer entre chaque. Un verrou de niveau ACCESS
EXCLUSIVE
est pris, sauf exception dûment précisée. Lorsque
plusieurs sous-commandes sont listées, le verrou pris sera le plus strict de
l'ensemble des sous-commandes.
RENAME
La forme RENAME
modifie le nom de l'index. Si l'index
est associé avec une contrainte de table (soit UNIQUE
,
soit PRIMARY KEY
, soit EXCLUDE
), la
contrainte est elle-aussi renommée. Cela n'a aucun effet sur les données
stockées.
Le renommage d'index acquiert un verrou de niveau SHARE UPDATE
EXCLUSIVE
.
SET TABLESPACE
Cette forme remplace le tablespace de l'index par le tablespace spécifié
et déplace les fichiers de données associés à l'index dans le nouveau
tablespace. Pour modifier le tablespace d'un index, vous devez être le
propriétaire de l'index et avoir le droit CREATE
sur
le nouveau tablespace. Toutes les index d'un tablespace de la base de
données actuelle peuvent être déplacés en utilisant la forme ALL
IN TABLESPACE
, qui verrouillera tous les index à déplacer, puis
les déplacera un par un. Cette forme supporte aussi la clause
OWNED BY
, qui ne déplacera que les index dont les
propriétaires sont indiqués. Si l'option NOWAIT
est
spécifié, alors la commande échouera si elle est incapable de récupérer
immédiatement tous les verrous requis. Notez que les catalogues systèmes
ne seront pas déplacés par cette commande. Dans ce cas, il faut utiliser
ALTER DATABASE
ou ALTER INDEX
. Voir
aussi CREATE
TABLESPACE
.
ATTACH PARTITION nom_index
Attache l'index nommé (potentiellement qualifié du schéma) à l'index modifié. L'index nommé doit être sur une partition de la table contenant l'index à modifier et avoir une définition équivalente. Un index attaché ne peut pas être lui-même supprimé. Il sera automatiquement supprimé si son index parent est supprimé.
DEPENDS ON EXTENSION nom_extension
NO DEPENDS ON EXTENSION nom_extension
Cette clause marque l'index comme dépendant de l'extension ou comme
indépendant de l'extension si le mot-clé NO
est
ajouté. Un index dépendant d'une extension est automatiquement supprimé
quand l'extension est supprimée.
SET ( paramètre_stockage
[= valeur
] [, ... ] )
Cette forme modifie un ou plusieurs paramètres spécifiques à la méthode
d'indexage de cet index. Voir CREATE INDEX
pour les
détails sur les paramètres disponibles. Notez que le contenu de l'index
ne sera pas immédiatement modifié par cette commande ; suivant le
paramètre, vous pourrez avoir besoin de reconstruire l'index avec REINDEX
pour obtenir
l'effet désiré.
ALTER [ COLUMN ] numéro_colonne
SET STATISTICS integer
Cette syntaxe configure la cible de récupération des statistiques par
colonne pour les opérations ANALYZE
qui suivront,
mais peut être utilisé seulement sur les colonnes d'index définies sous
la forme d'une expression. Comme les expressions n'ont pas de nom unique,
nous faisons référence à elles en utilisant le numéro ordinal de la
colonne d'index. La cible peut être configurée sur l'intervalle 0 à
10000. Une configuration à -1 annule l'ancienne configuration pour
revenir à l'utilisation de la cible statistique par défaut du système
(default_statistics_target). Pour plus
d'informations sur l'utilisation de statistiques par l'optimiseur de
requêtes de PostgreSQL, référez-vous à Section 14.2.
SET ( paramètre_stockage
[= valeur
] [, ... ] )
Cette forme modifie un ou plusieurs paramètres spécifiques à la méthode d'indexage de cet index. Voir CREATE INDEX pour les détails sur les paramètres disponibles. Notez que le contenu de l'index ne sera pas immédiatement modifié par cette commande ; suivant le paramètre, vous pouvez avoir besoin de reconstruire l'index avec REINDEX pour obtenir l'effet désiré.
RESET ( paramètre_stockage
[, ... ] )
Cette forme réinitialise un ou plusieurs paramètres de stockage
spécifiques à la méthode d'indexage à leurs valeurs par défaut. Comme
avec SET
, un REINDEX
peut être
nécessaire pour mettre à jour l'index complètement.
IF EXISTS
Ne retourne par d'erreur si l'index n'existe pas. Seul un message d'avertissement est retourné dans ce cas.
numéro_colonne
Ce numéro fait référence à la position ordinale (de gauche à droite) de la colonne de l'index.
nom
Le nom de l'index à modifier (éventuellement qualifié du nom du schéma).
nouveau_nom
Le nouveau nom de l'index.
nom_tablespace
Le nom du tablespace dans lequel déplacer l'index.
nom_extension
Le nom de l'extension dont l'index dépend.
paramètre_stockage
Le nom du paramètre de stockage spécifique à la méthode d'indexage.
valeur
La nouvelle valeur du paramètre de stockage spécifique à la méthode d'indexage. Cette valeur peut être un nombre ou une chaîne suivant le paramètre.
Ces opérations sont aussi possibles en utilisant ALTER TABLE
.
ALTER INDEX
n'est en fait qu'un alias pour les formes
d'ALTER TABLE
qui s'appliquent aux index.
Auparavant, il existait une variante ALTER INDEX OWNER
mais elle est maintenant ignorée (avec un message d'avertissement). Un index
ne peut pas avoir un propriétaire différent de celui de la table. Modifier le
propriétaire de la table modifie automatiquement celui de l'index.
Il est interdit de modifier toute partie d'un index du catalogue système.
Renommer un index existant :
ALTER INDEX distributeurs RENAME TO fournisseurs;
Déplacer un index dans un autre tablespace :
ALTER INDEX distributeurs SET TABLESPACE espacelogiquerapide;
Pour modifier le facteur de remplissage d'un index (en supposant que la méthode d'indexage le supporte) :
ALTER INDEX distributeurs SET (fillfactor = 75); REINDEX INDEX distributeurs;
Configure la cible de récupération des statistiques pour un index sur expression :
CREATE INDEX coord_idx ON measured (x, y, (z + t)); ALTER INDEX coord_idx ALTER COLUMN 3 SET STATISTICS 1000;
ALTER INDEX
est une extension
PostgreSQL.