A instrução ALTER INDEX modifica colunas em um índice de busca ou altera o status de um índice secundário ou de busca. Ao importar ou atualizar grandes volumes de dados, desative o índice com ALTER INDEX para melhorar o desempenho.
Sintaxe
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 }
Para índices secundários, a instrução
ALTER INDEXpermite alterar apenas o status do índice.Especifique propriedades para novas colunas somente ao modificar um índice de busca.
Compatibilidade
O LindormTable oferece suporte a dois tipos de índices: índice secundário, índice de busca . A tabela a seguir descreve a compatibilidade de cada tipo de índice com as cláusulas da instrução ALTER INDEX.
|
Elemento de sintaxe |
Índice secundário |
Índice de busca |
|
✖️ |
〇 |
|
|
✖️ |
〇 |
|
|
〇 |
〇 |
Uso
Adicionar colunas
Não é possível adicionar colunas a um índice secundário.
Adicione uma ou mais colunas e especifique propriedades de chave de índice para as novas colunas. Por exemplo, ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik)) adiciona três colunas de índice (c1, c3 e p1) e especifica que a coluna p1 usa o analisador ik. Para obter mais informações sobre as propriedades de chave de índice disponíveis, consulte Propriedades de chave de índice de busca (option_definition).
Remover colunas
Remova colunas apenas de um índice de busca.
Use a instrução DROP COLUMNS(column1, column2, ..., columnN) para remover uma ou mais colunas de índice. Exemplo: DROP COLUMNS(c3).
alter_state_expression
Defina o status do índice como um dos seguintes estados:
Parâmetro | Descrição |
ACTIVE | O índice está disponível e pode ser usado em consultas. |
INACTIVE | O índice fica indisponível e o otimizador de consultas o ignora, mas ele continua recebendo atualizações de dados da tabela base. |
DISABLED | O índice é desativado, o otimizador de consultas o ignora e ele deixa de receber atualizações de dados da tabela base. Importante Alterar o status de um índice secundário diretamente de |
Exemplos
As instruções a seguir criam a tabela base e os índices usados nos exemplos:
-- 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);
Desativar um índice
Desative o índice idx1.
ALTER INDEX idx1 ON test DISABLED;
Verifique o resultado
Execute a instrução SHOW INDEX FROM test; para visualizar o resultado.
Ativar um índice
ALTER INDEX IF EXISTS idx1 ON test ACTIVE;
Verifique o resultado
Execute a instrução SHOW INDEX FROM test; para visualizar o status do índice.
Adicionar colunas a um índice de busca
Adicione as colunas c1 e c3 ao índice de busca idx2 e especifique propriedades de chave de índice para a coluna c3.
ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));
Os dados históricos não são sincronizados automaticamente com as colunas de índice recém-adicionadas. Reconstrua o índice para incluir esses dados históricos. Para obter mais informações, consulte Reconstruir o índice de busca.
Verifique o resultado
Execute a instrução SHOW INDEX FROM test; para visualizar a coluna de índice.
Modifique propriedades de chave de índice
ALTER INDEX IF EXISTS idx2 ON test(c3(analyzer=standard));
Remover colunas de um índice de busca
ALTER INDEX IF EXISTS idx2 ON test DROP COLUMNS(c3);
Verifique o resultado
Execute a instrução SHOW INDEX FROM test; para visualizar a coluna de índice.
Reconstruir um índice de busca
Esta ação sincroniza todos os dados da tabela base com o índice de busca.
-
Construção síncrona de índice de busca: a instrução
ALTER INDEXretorna apenas após a conclusão da construção do índice.ALTER INDEX IF EXISTS idx2 ON test REBUILD; -
Construção assíncrona de índice de busca: a instrução
ALTER INDEXretorna imediatamente, independentemente do sucesso na construção do índice.ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;