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

Lindorm:ALTER INDEX

最終更新日:Jun 10, 2025

ALTER INDEX 構文を使用して、検索インデックスの列を変更したり、検索インデックスまたはセカンダリインデックスの状態を変更したりできます。大量のデータをインポートまたは更新する必要がある場合は、事前に 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 }
重要
  • セカンダリインデックスの場合、ALTER INDEX 構文を使用して、インデックスのステータスのみを変更できます。

  • 検索インデックスの場合、ALTER INDEX 構文を使用して、属性を指定したインデックス列を追加できます。

サポートされているパラメーター

LindormTable は、セカンダリインデックスと検索インデックスの2 種類のインデックスをサポートしています。次の表に、セカンダリインデックスと検索インデックスでサポートされている ALTER INDEX 構文のパラメーターを示します。

パラメーター

セカンダリインデックス

検索インデックス

ADD COLUMNS

️️️️️️️✖️

alter_state_expression

パラメーター

ADD COLUMNS

セカンダリインデックスに列を追加することはできません。

検索インデックスに 1 つまたは複数の列を追加する場合、列の属性を設定できます。 たとえば、ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik)) 句を指定して、検索インデックスに c1、c3、p1 の 3 つの列を追加し、p1 列に IK アナライザを使用するように指定できます。 追加できるインデックス キー属性については、「CREATE INDEX」トピックの「インデックス キー式(index_key_expression)」セクションにある検索インデックスのインデックス キー属性(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 文は、インデックスが構築された後にのみ返されます。

    ALTER INDEX IF EXISTS idx2 ON test REBUILD;
  • 非同期検索インデックス構築: ALTER INDEX 文は、インデックスが構築されているかどうかに関係なく、すぐに返されます。

    ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;