全部产品
Search
文档中心

云原生多模数据库 Lindorm:ALTER INDEX

更新时间:Nov 26, 2024

ALTER INDEX用于变更搜索索引列、修改二级索引和搜索索引的索引状态。如果需要导入或更新大量数据,建议在导入或更新前通过ALTER INDEX禁用索引以保证导入效率,提高更新速度。

语法

alter_index_statement  ::=  ALTER INDEX [IF EXISTS] index_identifier
                            ON table_identifier
                            {
                              ADD COLUMNS '(' alter_key_expression ')'
                              |
                              DROP 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 }
重要
  • 如果修改的是二级索引,则ALTER INDEX仅支持修改索引状态。

  • 只有修改的是搜索索引时,才支持语法中添加索引列时在索引列后面指定列属性。

差异说明

Lindorm宽表引擎共支持两种索引:二级索引、搜索索引。索引对各语法要素的支持情况如下:

语法要素

二级索引

搜索索引

增加列(ADD COLUMNS)

✖️

修改索引状态(alter_state_expression)

使用说明

增加列(ADD COLUMNS)

二级索引不支持增加列。

您可以在增加一个或多个列的同时,为新增的列增加索引键属性,例如ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik))表示新增三个索引列c1、c3和p1,并指定p1列使用ik分词器。可添加的索引键属性,请参见搜索索引键属性(option_definition)中的搜索索引键属性(option_definition)。

修改索引状态(alter_state_expression)

支持修改的索引状态共以下三种:

参数

说明

ACTIVE

索引为可用状态。

INACTIVE

索引不可用。

DISABLED

禁用索引。修改后,索引状态为INACTIVE。

示例

假设主表和索引的创建语句如下:

-- 创建主表
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');

-- 创建二级索引idx1
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');

-- 创建搜索索引idx2
CREATE INDEX IF NOT EXISTS idx2 USING SEARCH ON test(p1, p2, c2);

禁用索引

禁用索引idx1。​

ALTER INDEX idx1 ON test DISABLED;

结果验证

您可以执行SHOW INDEX FROM test;语句,查看修改结果。

重新启用索引

ALTER INDEX IF EXISTS idx1 ON test ACTIVE;

结果验证

您可以执行SHOW INDEX FROM test;语句,查看索引状态。

新增搜索索引列

为搜索索引idx2新增c1列和c3列,并为c3列添加索引键属性。

ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));
说明

历史数据不会自动同步至新增的索引列,如果希望这些列的历史数据被索引到,请重新构建索引。如何操作,请参见重新构建搜索索引

结果验证

您可以执行SHOW INDEX FROM test;语句,查看索引列。

重新构建搜索索引

重新将全量数据同步到搜索索引中。

ALTER INDEX IF EXISTS idx2 ON test REBUILD;