全部產品
Search
文件中心

Lindorm:ALTER INDEX

更新時間:Nov 27, 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;