Memodifikasi indeks yang sudah ada pada tabel LindormTable. Gunakan ALTER INDEX untuk menambahkan kolom ke search index, mengubah status search index atau secondary index, atau membangun ulang search index.
Untuk memaksimalkan throughput write selama impor data massal atau pembaruan, nonaktifkan indeks yang terpengaruh sebelum operasi, lalu aktifkan kembali setelahnya.
Sintaksis
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 }Operasi yang didukung
Tabel berikut menunjukkan operasi mana saja yang tersedia untuk setiap jenis indeks.
| Operasi | Secondary index | Search index |
|---|---|---|
ADD COLUMNS | Tidak didukung | Didukung |
| Ubah status indeks | Didukung | Didukung |
Parameter
ADD COLUMNS
Menambahkan satu atau beberapa kolom ke search index. Anda dapat mengonfigurasi atribut khusus pencarian untuk setiap kolom secara inline.
Contoh: ADD COLUMNS(c1, c3, p1(type=text, analyzer=ik)) menambahkan tiga kolom dan menerapkan alat analisis IK ke p1.
Untuk daftar lengkap atribut yang dapat dikonfigurasi, lihat atribut kunci indeks untuk search index dalam topik CREATE INDEX.
ADD COLUMNS tidak didukung untuk secondary index.
Data historis tidak disinkronkan secara otomatis ke kolom indeks yang baru ditambahkan. Untuk mengindeks data yang sudah ada, bangun ulang search index setelah menambahkan kolom.
alter_state_expression
Mengubah status indeks. Gunakan ini untuk mengaktifkan atau menonaktifkan indeks.
| Status | Deskripsi |
|---|---|
ACTIVE | Indeks aktif. |
INACTIVE | Indeks tidak aktif. |
DISABLED | Indeks dinonaktifkan. Menjalankan ALTER INDEX pada indeks dengan status ini akan mengubah statusnya menjadi INACTIVE. |
Contoh
Semua contoh menggunakan tabel dasar dan indeks berikut:
-- Buat tabel utama
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');
-- Buat secondary index idx1
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');
-- Buat search index idx2
CREATE INDEX IF NOT EXISTS idx2 USING SEARCH ON test(p1, p2, c2);Nonaktifkan indeks
ALTER INDEX idx1 ON test DISABLED;Verifikasi hasil
SHOW INDEX FROM test;Periksa apakah idx1 menampilkan status DISABLED dalam output.
Aktifkan indeks yang dinonaktifkan
ALTER INDEX IF EXISTS idx1 ON test ACTIVE;Verifikasi hasil
SHOW INDEX FROM test;Periksa apakah idx1 menampilkan status ACTIVE dalam output.
Tambah kolom ke search index
Pernyataan berikut menambahkan kolom c1 dan c3 ke search index idx2, serta mengonfigurasi c3 untuk menggunakan pencarian teks lengkap dengan alat analisis IK.
ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));Data historis di c1 dan c3 tidak diindeks secara otomatis. Untuk menyertakan data yang sudah ada, bangun ulang search index setelah operasi ini.
Verifikasi hasil
SHOW INDEX FROM test;Periksa apakah c1 dan c3 muncul dalam daftar kolom indeks untuk idx2.
Bangun ulang search index
Membangun ulang menyinkronkan semua data tabel yang sudah ada ke dalam search index.
Bangun ulang sinkron — pernyataan hanya mengembalikan respons setelah proses bangun ulang selesai.
ALTER INDEX IF EXISTS idx2 ON test REBUILD;Bangun ulang asinkron — pernyataan langsung mengembalikan respons. Proses bangun ulang berlanjut di latar belakang.
ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;