All Products
Search
Document Center

PolarDB:Pertimbangan\ penggunaan\ global\ secondary\ indexes

Last Updated:Mar 28, 2026

Global secondary indexes (GSIs) memiliki batasan tertentu terkait cara pembuatannya, modifikasi tabel yang memuatnya, serta pelaksanaan operasi DDL dan DML. Memahami batasan ini sejak awal membantu Anda menghindari kesalahan desain skema dan kegagalan tak terduga pada waktu proses.

Batasan pembuatan GSI

  • GSI tidak didukung pada ApsaraDB RDS for MySQL 5.6.

  • GSI tidak dapat dibuat pada tabel tunggal atau broadcast tables.

  • GSI tidak dapat dibuat pada tabel yang tidak memiliki primary key.

  • Prefix indexes tidak dapat digunakan dalam UNIQUE GSI.

  • Tentukan nama indeks saat membuat tabel indeks.

  • Saat membuat tabel indeks, tentukan hanya aturan sharding database, atau aturan sharding database dan tabel sekaligus. Menentukan hanya aturan sharding tabel, atau tidak menentukan aturan sharding sama sekali, tidak diperbolehkan.

  • Kolom INDEX pada tabel indeks harus mencakup semua shard key.

  • Nama GSI tidak boleh menduplikasi nama indeks lokal apa pun di tabel utama.

  • Kolom indeks dan covering columns harus berbeda dalam definisi GSI.

  • Secara default, tabel indeks mencakup semua primary key dan shard key dari tabel utama. Primary key atau shard key yang tidak secara eksplisit dicantumkan sebagai kolom indeks akan secara otomatis ditambahkan ke covering columns.

  • Untuk setiap indeks lokal di tabel utama, jika semua kolom yang dirujuknya ada di tabel indeks, indeks lokal tersebut akan secara otomatis ditambahkan ke tabel indeks.

  • Secara default, indeks terpisah dibuat untuk setiap kolom indeks dalam GSI bila tidak ada indeks yang sudah ada yang mencakupnya.

  • Untuk GSI dengan multiple kolom indeks, indeks lokal komposit yang mencakup semua kolom tersebut dibuat secara default.

  • Parameter length pada kolom indeks hanya berlaku saat membuat indeks lokal pada shard key tabel indeks.

  • Saat Anda membuat GSI pada tabel yang sudah ada, PolarDB secara otomatis memverifikasi konsistensi data di akhir proses pembuatan. Pernyataan DDL hanya berhasil setelah data lolos verifikasi.

Untuk memverifikasi atau memodifikasi data GSI secara manual, gunakan pernyataan CHECK GLOBAL INDEX.

Batasan ALTER TABLE

Operasi kolom

Tabel berikut menunjukkan operasi kolom ALTER TABLE yang didukung pada tabel yang memiliki GSI.

StatementShard keys tabel utamaKunci utama tabel utama (juga kunci utama tabel indeks)Kolom Indeks Unik LokalShard keys tabel indeksKolom Indeks UnikKolom indeksCovering column
ADD COLUMNTidak ada skenario seperti iniTidak didukungTidak ada skenario seperti iniTidak ada skenario seperti iniTidak ada skenario seperti iniTidak ada skenario seperti iniTidak ada skenario seperti ini
ALTER COLUMN SET DEFAULT / ALTER COLUMN DROP DEFAULTTidak didukungTidak didukungDidukungTidak didukungTidak didukungTidak didukungTidak didukung
CHANGE COLUMNTidak didukungTidak didukungDidukungTidak didukungTidak didukungTidak didukungTidak didukung
DROP COLUMNTidak didukungTidak didukungDidukung (hanya ketika unique key memiliki tepat satu kolom)Tidak didukungTidak didukungTidak didukungTidak didukung
MODIFY COLUMNTidak didukungTidak didukungDidukungTidak didukungTidak didukungTidak didukungTidak didukung
Klasifikasi kolom dapat tumpang tindih. Misalnya, kolom indeks mencakup shard keys tabel indeks, dan covering column mencakup shard keys tabel utama, primary keys, serta kolom yang secara eksplisit ditentukan. Jika suatu kolom termasuk dalam kategori "Tidak didukung" dan "Didukung" sekaligus, maka kategori "Tidak didukung" yang berlaku.

Untuk menghapus kolom dari GSI, gunakan pernyataan DROP INDEX untuk menghapus GSI, lalu buat ulang tanpa kolom yang tidak diinginkan. Menghapus kolom secara langsung dengan DROP COLUMN tidak didukung demi menjaga stabilitas dan performa GSI.

Operasi indeks

Tabel berikut menunjukkan operasi indeks ALTER TABLE yang didukung.

StatementDidukung
ALTER TABLE ADD PRIMARY KEYYa
ALTER TABLE ADD [UNIQUE | FULLTEXT | SPATIAL | FOREIGN] KEYYa. Indeks lokal dapat ditambahkan ke tabel utama dan tabel indeks sekaligus. Nama indeks harus berbeda dari nama GSI.
ALTER TABLE ALTER INDEX *index_name* {VISIBLE | INVISIBLE}Ya, hanya pada tabel utama. Status visibilitas GSI tidak dapat diubah.
ALTER TABLE {DISABLE | ENABLE} KEYSYa, hanya pada tabel utama. Status GSI tidak dapat diubah.
ALTER TABLE DROP PRIMARY KEYTidak
ALTER TABLE DROP INDEXDidukung hanya untuk indeks umum dan GSI.
ALTER TABLE RENAME INDEXTidak. Untuk mengganti nama GSI, hapus dengan DROP INDEX, lalu buat ulang dengan nama baru.

Batasan tabel indeks

  • Pernyataan DDL dan DML tidak dapat dieksekusi pada tabel indeks.

  • Pernyataan DML yang mencakup NODE HINT tidak dapat digunakan untuk memperbarui tabel utama atau tabel indeks.

Batasan pernyataan DDL lainnya

StatementDidukung
DROP TABLEYa
DROP INDEXYa
TRUNCATE TABLETidak. Untuk menghapus data dari tabel utama dan tabel indeksnya sekaligus sambil menjaga konsistensi, gunakan pernyataan DELETE sebagai gantinya.
RENAME TABLETidak. Untuk mengganti nama tabel yang memiliki GSI, hapus GSI dengan DROP INDEX, ganti nama tabel, lalu buat ulang GSI.
ALTER TABLE RENAMETidak. Gunakan solusi alternatif yang sama seperti RENAME TABLE di atas.

Batasan pernyataan DML

Pernyataan DML tidak dapat dieksekusi pada tabel indeks. Untuk batasan operasi DML terhadap tabel utama, lihat Batasan global secondary indexes pada DML.