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
セカンダリインデックスに列を追加することはできません。
検索インデックスに 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;