LindormTable テーブル上の既存のインデックスを変更します。ALTER INDEX を使用して、検索インデックスに列を追加したり、検索インデックスまたはセカンダリインデックスのステータスを変更したり、検索インデックスを再構築したりできます。
データの一括インポートまたは更新中に書き込みスループットを最大化するには、操作の前に影響を受けるインデックスを無効にし、操作後に再度有効にしてください。
構文
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 }サポートされている操作
次の表は、各インデックスタイプで利用可能な操作を示しています。
| 操作 | セカンダリインデックス | 検索インデックス |
|---|---|---|
ADD COLUMNS | サポートされていません | サポートされています |
| インデックスステータスの変更 | サポートされています | サポートされています |
パラメーター
ADD COLUMNS
検索インデックスに 1 つ以上の列を追加します。各列の検索固有の属性をインラインで構成できます。
例: ADD COLUMNS(c1, c3, p1(type=text, analyzer=ik)) は、3 つの列を追加し、p1 に IK アナライザを適用します。
設定可能な属性の全リストについては、CREATE INDEX トピックの検索インデックスのインデックスキー属性をご参照ください。
ADD COLUMNS は、セカンダリインデックスではサポートされていません。
既存データは、新しく追加されたインデックスキー列に自動的に同期されません。既存データをインデックス化するには、列を追加した後に検索インデックスを再構築してください。
alter_state_expression
インデックスのステータスを変更します。これを使用してインデックスを有効または無効にします。
| 状態 | 説明 |
|---|---|
ACTIVE | インデックスはアクティブです。 |
INACTIVE | インデックスは非アクティブです。 |
DISABLED | インデックスは無効です。この状態のインデックスに対して ALTER INDEX を実行すると、状態が 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);インデックスの無効化
ALTER INDEX idx1 ON test DISABLED;結果の確認
SHOW INDEX FROM test;idx1 が、出力結果に DISABLED のステータスを表示していることを確認してください。
無効なインデックスの有効化
ALTER INDEX IF EXISTS idx1 ON test ACTIVE;結果の確認
SHOW INDEX FROM test;出力で idx1 のステータスが ACTIVE と表示されていることを確認します。
検索インデックスへの列の追加
次の文は、検索インデックス idx2 に列 c1 および c3 を追加し、c3 を IK アナライザを使用した全文検索用に設定します。
ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));c1 および c3 の履歴データは自動的にインデックスされません。既存のデータを含めるには、この操作後に検索インデックスを再構築してください。
結果の確認
SHOW INDEX FROM test;c1 および c3 が、idx2 のインデックスキー列リストに含まれていることを確認してください。
検索インデックスの再構築
再構築により、すべての既存テーブルデータが検索インデックスに同期されます。
同期再構築 — ステートメントは再構築が完了した後にのみ返されます。
ALTER INDEX IF EXISTS idx2 ON test REBUILD;非同期再構築 — ステートメントはすぐに返されます。再構築はバックグラウンドで継続されます。
ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;