すべてのプロダクト
Search
ドキュメントセンター

Lindorm:ALTER INDEX

最終更新日:Mar 29, 2026

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;