All Products
Search
Document Center

Lindorm:ALTER INDEX

Last Updated:Apr 11, 2026

Pernyataan ALTER INDEX mengubah kolom dalam indeks pencarian atau mengubah status indeks, baik untuk indeks secondary maupun indeks pencarian. Saat mengimpor atau memperbarui data dalam jumlah besar, nonaktifkan indeks dengan ALTER INDEX untuk meningkatkan kinerja.

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 | DISABLED }
Penting
  • Jika Anda memodifikasi secondary index, pernyataan ALTER INDEX hanya mendukung perubahan status indeks.

  • Anda hanya dapat menentukan properti untuk kolom baru saat memodifikasi search index.

Kompatibilitas

LindormTable mendukung dua jenis indeks: secondary index, search index. Tabel berikut menjelaskan kompatibilitas setiap jenis indeks dengan klausa dalam pernyataan ALTER INDEX.

Elemen sintaksis

Secondary index

Search index

Tambah kolom

✖️

〇

alter_state_expression

〇

〇

Penggunaan

Tambah kolom

Anda tidak dapat menambahkan kolom ke secondary index.

Anda dapat menambahkan satu atau beberapa kolom dan menentukan properti kunci indeks untuk kolom baru tersebut. Misalnya, ADD COLUMNS(c1,c3,p1(type=text,analyzer=ik)) menambahkan tiga kolom indeks—c1, c3, dan p1—serta menentukan bahwa kolom p1 menggunakan alat analisis ik. Untuk informasi lebih lanjut tentang properti kunci indeks yang tersedia, lihat Properti kunci indeks pencarian (option_definition).

alter_state_expression

Anda dapat mengatur status indeks ke salah satu kondisi berikut:

Parameter

Deskripsi

ACTIVE

Indeks tersedia dan dapat digunakan dalam kueri.

INACTIVE

Indeks tidak tersedia dan diabaikan oleh Pengoptimal kueri, tetapi tetap menerima pembaruan data dari tabel dasar.

DISABLED

Indeks dinonaktifkan, diabaikan oleh Pengoptimal kueri, dan tidak lagi menerima pembaruan data dari tabel dasar.

Penting

Mengubah status secondary index langsung dari DISABLED ke ACTIVE dapat menyebabkan kehilangan data. Anda harus membangun ulang indeks sebelum mengaktifkannya kembali.

Contoh

Pernyataan berikut membuat tabel dasar dan indeks yang digunakan dalam contoh:

-- 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 secondary index bernama idx1.
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');

-- Buat search index 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

Jalankan pernyataan SHOW INDEX FROM test; untuk melihat hasilnya.

Aktifkan indeks

ALTER INDEX IF EXISTS idx1 ON test ACTIVE;

Verifikasi hasil

Jalankan pernyataan SHOW INDEX FROM test; untuk melihat status indeks.

Menambahkan kolom ke indeks pencarian

Tambahkan kolom c1 dan c3 ke search index idx2, serta tentukan properti kunci indeks untuk kolom c3.

ALTER INDEX IF EXISTS idx2 ON test ADD COLUMNS(c1,c3(type=text,analyzer=ik));
Catatan

Data historis tidak disinkronkan secara otomatis ke kolom indeks yang baru ditambahkan. Anda harus membangun ulang indeks agar mencakup data historis tersebut. Untuk informasi selengkapnya, lihat Bangun ulang indeks pencarian.

Verifikasi hasil

Jalankan pernyataan SHOW INDEX FROM test; untuk melihat kolom indeks.

Bangun ulang search index

Aksi ini menyinkronkan semua data dari tabel dasar ke search index.

  • Pembuatan search index secara sinkron: Pernyataan ALTER INDEX hanya mengembalikan respons setelah proses pembuatan indeks selesai.

    ALTER INDEX IF EXISTS idx2 ON test REBUILD;
  • Pembuatan search index secara asinkron: Pernyataan ALTER INDEX langsung mengembalikan respons, terlepas dari apakah indeks berhasil dibuat atau tidak.

    ALTER INDEX IF EXISTS idx2 ON test REBUILD ASYNC;