AnalyticDB for MySQL menyediakan indeks JSON sebagai fitur untuk menyederhanakan pemrosesan dan meningkatkan efisiensi kueri data semi-terstruktur. Topik ini menjelaskan cara membuat indeks JSON dan indeks array JSON.
Ikhtisar
AnalyticDB for MySQL mendukung indeks JSON dan indeks array JSON. Anda dapat membuat indeks ini untuk kolom bertipe JSON, sehingga tidak perlu memindai seluruh tabel atau mengurai dokumen JSON saat melakukan kueri. Indeks JSON cocok untuk skenario penyimpanan dan pengkuerian data semi-terstruktur seperti log, file konfigurasi, dan informasi perangkat.
Catatan penggunaan
Anda hanya dapat membuat indeks JSON dan indeks array JSON untuk kolom bertipe JSON.
Setiap indeks JSON atau indeks array JSON hanya melibatkan satu kolom JSON. Untuk melibatkan beberapa kolom, buat beberapa indeks terpisah.
Saat membuat indeks JSON atau indeks array JSON untuk tabel yang sudah ada:
Untuk tabel XUANWU_V2 yang dipartisi dan tidak dipartisi, indeks langsung berlaku tanpa memerlukan pekerjaan BUILD.
Untuk tabel XUANWU yang tidak dipartisi, indeks baru berlaku setelah pekerjaan BUILD selesai.
Untuk tabel XUANWU yang dipartisi, indeks baru berlaku setelah pekerjaan BUILD pada seluruh tabel selesai.
Buat indeks JSON
Perhatikan hal-hal berikut saat membuat indeks JSON:
Untuk kluster AnalyticDB for MySQL versi V3.1.5.10 atau lebih baru, indeks JSON tidak dibuat secara otomatis setelah pembuatan tabel. Anda harus membuatnya secara manual.
Untuk kluster AnalyticDB for MySQL sebelum versi V3.1.5.10, indeks JSON dibuat secara otomatis untuk kolom JSON setelah pembuatan tabel.
Untuk melihat dan memperbarui versi minor dari kluster AnalyticDB for MySQL, masuk ke konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Buat indeks JSON saat membuat tabel
Catatan penggunaan
Jika Anda menentukan satu atau lebih kolom untuk indeks saat membuat tabel, AnalyticDB for MySQL tidak akan membuat indeks untuk kolom lain dalam tabel.
Sintaks
CREATE TABLE table_name(
column_name column_type,
{INDEX|KEY} [index_name](column_name|column_name->'$.json_path')
)
DISTRIBUTED BY HASH(column_name)Parameter
Parameter | Deskripsi |
index_name | Nama indeks JSON. Penting Nama indeks harus unik. |
column_name|column_name->'$.json_path' |
|
Untuk informasi tentang parameter lain dari pernyataan pembuatan tabel, lihat CREATE TABLE.
Contoh
Buat indeks JSON untuk kolom
vjbertipe JSON dalam tabeljson_test.CREATE TABLE json_test( id int, vj json, index idx_vj(vj) ) DISTRIBUTED BY HASH(id);Buat indeks JSON untuk kunci properti
namedari kolom JSONvjdalam tabeljson_test.CREATE TABLE json_test( id int, vj json COMMENT index idx_vj_path(vj->'$.name') ) DISTRIBUTED BY HASH(id);
Buat indeks JSON untuk tabel yang sudah ada
Sintaks
ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name|column_name->'$.json_path',...)Parameter
Parameter | Deskripsi |
db_name | Nama basis data. |
table_name | Nama tabel. |
index_name | Nama indeks JSON. Penting Nama indeks harus unik. |
column_name|column_name->'$.json_path' |
|
Contoh
Buat indeks JSON untuk kolom
vjbertipe JSON dalam tabeljson_test.ALTER TABLE json_test ADD KEY index_vj(vj);Buat indeks JSON untuk kunci properti
namedari kolom JSONvjdalam tabeljson_test.ALTER TABLE json_test ADD KEY index_vj_key(vj->'$.name');
Buat indeks array JSON
Hanya kluster AnalyticDB for MySQL versi V 3.1.10.6 atau lebih baru yang mendukung indeks array JSON. Setelah membuat indeks array JSON, Anda dapat menggunakan fungsi JSON_CONTAINS dan JSON_OVERLAPS untuk meningkatkan efisiensi kueri.
Untuk melihat dan memperbarui versi minor dari kluster AnalyticDB for MySQL, masuk ke konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Catatan penggunaan
AnalyticDB for MySQL hanya dapat membuat indeks untuk elemen numerik dan string dalam array JSON, tetapi tidak untuk jenis elemen lainnya (seperti array bersarang atau objek).
Buat indeks array JSON saat membuat tabel
Sintaks
CREATE TABLE table_name(
column_name column_type,
{INDEX|KEY} [index_name](column_name->'$[*]')
)
DISTRIBUTED BY HASH(column_name);Parameter
Parameter | Deskripsi |
index_name | Nama indeks array JSON. Penting Nama indeks harus unik. |
column_name->'$[*]' |
|
Contoh
Buat indeks array JSON untuk kolom vj bertipe JSON dalam tabel json_test.
CREATE TABLE json_test(
id int,
vj json,
index idx_vj_array(vj->'$[*]')
)
DISTRIBUTED BY HASH(id);Buat indeks array JSON untuk tabel yang sudah ada
Sintaks
ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name->'$[*]')Parameter
Parameter | Deskripsi |
db_name | Nama basis data. |
table_name | Nama tabel. |
index_name | Nama indeks array JSON. Penting Nama indeks harus unik. |
column_name->'$[*]' |
|
Contoh
Buat indeks array JSON untuk kolom vj bertipe JSON dalam tabel json_test.
ALTER TABLE json_test ADD KEY index_vj(vj->'$[*]');Hapus indeks
Sintaks
ALTER TABLE db_name.table_name DROP KEY index_nameParameter
index_name: nama indeks yang ingin dihapus. Anda dapat menjalankan pernyataan SHOW INDEX FROM db_name.table_name; untuk mengkueri nilai parameter index_name.
Contoh
Hapus indeks bernama
age_idxdalam tabelcustomer.ALTER TABLE adb_demo.customer DROP KEY age_idx;Hapus indeks array JSON bernama
index_vjdalam tabeljson_test.ALTER TABLE adb_demo.customer DROP KEY index_vj;
Referensi
JSON: menjelaskan tipe data JSON.
Fungsi JSON: menjelaskan fungsi JSON yang didukung oleh AnalyticDB for MySQL.