L'instruction ALTER INDEX modifie les colonnes d'un index de recherche ou change l'état d'un index secondaire ou de recherche. Lors de l'importation ou de la mise à jour de volumes importants de données, désactivez l'index avec ALTER INDEX pour améliorer les performances.
Syntaxe
alter_index_statement ::= ALTER INDEX [IF EXISTS] index_identifier
ON table_identifier
{
ADD COLUMNS '(' alter_key_expression ')'
|
alter_state_expression
}
[ASYNC]
alter_key_expression ::= index_key_definition [ (',' index_key_definition)* ]
index_key_definition ::= {
column_identifier [ DESC ]
| column_identifier'(' column_options ')'
}
alter_state_expression ::= { ACTIVE | INACTIVE | DISABLED }
Si vous modifiez un index secondaire,
ALTER INDEXpermet uniquement de modifier l'état de l'index.Vous ne pouvez spécifier des propriétés pour les nouvelles colonnes que lors de la modification d'un index de recherche.
Compatibilité
LindormTable prend en charge deux types d'index : index secondaire, index de recherche . Le tableau suivant décrit la compatibilité de chaque type d'index avec les clauses de l'instruction ALTER INDEX.
|
Élément de syntaxe |
Index secondaire |
Index de recherche |
|
✖️ |
〇 |
|
|
〇 |
〇 |
Utilisation
Ajouter des colonnes
Vous ne pouvez pas ajouter de colonnes à un index secondaire.
Vous pouvez ajouter une ou plusieurs colonnes et spécifier des propriétés de clé d'index pour les nouvelles colonnes. Par exemple, ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik)) ajoute trois colonnes d'index, c1, c3 et p1, et spécifie que la colonne p1 utilise l'analyseur ik. Pour plus d'informations sur les propriétés de clé d'index disponibles, consultez la section Propriétés de clé d'index de recherche (option_definition).
alter_state_expression
Définissez l'état de l'index sur l'une des valeurs suivantes :
Paramètre | Description |
ACTIVE | L'index est disponible et peut être utilisé dans les requêtes. |
INACTIVE | L'index n'est pas disponible et est ignoré par l'optimiseur de requêtes, mais continue de recevoir les mises à jour de données depuis la table de base. |
DISABLED | L'index est désactivé, ignoré par l'optimiseur de requêtes et ne reçoit plus les mises à jour de données depuis la table de base. Important Le passage direct de l'état d'un index secondaire de |
Exemples
Les instructions suivantes créent la table de base et les index utilisés dans les exemples :
-- Create a base table.
CREATE TABLE test (
p1 VARCHAR NOT NULL,
p2 INTEGER NOT NULL,
c1 BIGINT,
c2 DOUBLE,
c3 VARCHAR,
c4 TIMESTAMP,
PRIMARY KEY(p1, p2)
) WITH (CONSISTENCY = 'strong', MUTABILITY='MUTABLE_LATEST');
-- Create a secondary index named idx1.
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');
-- Create a search index named idx2.
CREATE INDEX IF NOT EXISTS idx2 USING SEARCH ON test(p1, p2, c2);
Désactiver un index
Désactivez l'index idx1.
ALTER INDEX idx1 ON test DISABLED;
Vérifier le résultat
Exécutez l'instruction SHOW INDEX FROM test; pour consulter le résultat.
Activer un index
ALTER INDEX IF EXISTS idx1 ON test ACTIVE;
Vérifier le résultat
Exécutez l'instruction SHOW INDEX FROM test; pour consulter l'état de l'index.
Ajouter des colonnes à un index de recherche
Ajoutez les colonnes c1 et c3 à l'index de recherche idx2, et spécifiez les propriétés de clé d'index pour la colonne c3.
ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));
Les données historiques ne sont pas automatiquement synchronisées vers les colonnes d'index nouvellement ajoutées. Vous devez reconstruire l'index pour inclure ces données historiques. Pour plus d'informations, consultez la section Reconstruire l'index de recherche.
Vérifier le résultat
Exécutez l'instruction SHOW INDEX FROM test; pour consulter la colonne d'index.
Reconstruire un index de recherche
Cette action synchronise toutes les données de la table de base vers l'index de recherche.
-
Construction synchrone d'un index de recherche : L'instruction
ALTER INDEXne renvoie le contrôle qu'une fois la construction de l'index terminée.ALTER INDEX IF EXISTS idx2 ON test REBUILD; -
Construction asynchrone d'un index de recherche : L'instruction
ALTER INDEXrenvoie immédiatement le contrôle, que l'index ait été construit avec succès ou non.ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;