Anda dapat menggunakan sintaks ALTER INDEX untuk mengubah kolom dalam indeks pencarian dan mengubah status indeks pencarian atau indeks sekunder. Jika Anda perlu mengimpor atau memperbarui sejumlah besar data, disarankan untuk menonaktifkan indeks terlebih dahulu guna memastikan efisiensi impor atau mempercepat pembaruan.
Sintaks
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 }Untuk indeks sekunder, sintaks
ALTER INDEXhanya dapat digunakan untuk mengubah status indeks.Untuk indeks pencarian, Anda dapat menggunakan sintaks ALTER INDEX untuk menambahkan kolom indeks dengan atribut yang ditentukan.
Parameter yang didukung
LindormTable mendukung dua jenis indeks berikut: indeks sekunder dan indeks pencarian. Tabel berikut menjelaskan parameter dari sintaks ALTER INDEX yang didukung oleh indeks sekunder dan indeks pencarian.
Parameter | Indeks sekunder | Indeks pencarian |
️️️️️️️✖️ | 〇 | |
〇 | 〇 |
Parameter
ADD COLUMNS
Anda tidak dapat menambahkan kolom ke indeks sekunder.
Ketika menambahkan satu atau lebih kolom ke indeks pencarian, Anda dapat mengonfigurasi atribut untuk kolom tersebut. Misalnya, klausa ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik)) menambahkan tiga kolom (c1, c3, dan p1) ke indeks pencarian, dengan kolom p1 menggunakan analisis IK. Untuk informasi tentang atribut kunci indeks yang dapat ditambahkan, kunjungi tab Atribut Kunci Indeks untuk Indeks Pencarian (option_definition) di bagian Ekspresi Kunci Indeks (index_key_expression) topik CREATE INDEX.
alter_state_expression
Parameter ini menentukan pernyataan yang digunakan untuk mengubah status indeks. Tabel berikut menjelaskan status indeks yang didukung.
State | Deskripsi |
ACTIVE | Indeks aktif. |
INACTIVE | Indeks tidak aktif. |
DISABLED | Indeks dinonaktifkan. Jika Anda menggunakan sintaks untuk mengubah indeks dalam status ini, status indeks menjadi INACTIVE. |
Contoh
Dalam contoh berikut, tabel dasar dan indeks dibuat dengan mengeksekusi pernyataan berikut:
-- Buat tabel dasar.
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 indeks sekunder bernama idx1.
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');
-- Buat indeks pencarian bernama idx2.
CREATE INDEX IF NOT EXISTS idx2 USING SEARCH ON test(p1, p2, c2);Nonaktifkan indeks
Nonaktifkan indeks idx1.
ALTER INDEX idx1 ON test DISABLED;Verifikasi Hasil
Eksekusi pernyataan SHOW INDEX FROM test; untuk memverifikasi hasil perubahan.
Aktifkan indeks yang dinonaktifkan
ALTER INDEX IF EXISTS idx1 ON test ACTIVE;Verifikasi Hasil
Eksekusi pernyataan SHOW INDEX FROM test; untuk memeriksa status indeks.
Tambahkan kolom ke indeks pencarian
Anda dapat mengeksekusi pernyataan berikut untuk menambahkan kolom c1 dan c3 ke indeks pencarian idx2 dan mengonfigurasi atribut kolom c3.
ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));Data historis tidak disinkronkan secara otomatis ke kolom indeks baru. Jika Anda ingin data historis dari kolom-kolom ini diindeks, bangun ulang indeks pencarian. Untuk informasi lebih lanjut, lihat Bangun Ulang Indeks Pencarian.
Verifikasi Hasil
Eksekusi pernyataan SHOW INDEX FROM test; untuk melihat kolom indeks.
Bangun ulang indeks pencarian
Anda dapat menyinkronkan data lengkap ke indeks pencarian yang sesuai.
Pembuatan indeks pencarian sinkron: Pernyataan
ALTER INDEXdikembalikan setelah indeks dibangun.ALTER INDEX IF EXISTS idx2 ON test REBUILD;Pembuatan indeks pencarian asinkron: Pernyataan
ALTER INDEXdikembalikan segera tanpa memedulikan apakah indeks telah dibangun.ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;