Topik ini menjelaskan indeks cerdas bawaan dari ApsaraDB for SelectDB serta cara menggunakannya.
Informasi latar belakang
Indeks digunakan untuk memfilter atau mengkueri data secara cepat. ApsaraDB for SelectDB mendukung jenis-jenis indeks berikut:
Indeks cerdas bawaan, termasuk indeks peta zona dan indeks awalan.
Indeks sekunder kustom, termasuk indeks terbalik, indeks bitmap, indeks Bloom filter, dan indeks Bloom filter NGram. Untuk informasi lebih lanjut, lihat Indeks terbalik, Indeks bitmap, Indeks Bloom filter, dan Indeks Bloom filter NGram.
Indeks peta zona
Indeks peta zona adalah informasi indeks yang secara otomatis dipertahankan untuk setiap kolom dalam format penyimpanan berorientasi kolom, mencakup Min, Max, dan jumlah nilai NULL. Indeks ini dibuat dan dipertahankan secara otomatis oleh ApsaraDB for SelectDB.
Indeks awalan
ApsaraDB for SelectDB berbeda dari database tradisional karena merupakan database pemrosesan analitik online (OLAP) yang menggunakan arsitektur pemrosesan paralel masif (MPP) untuk menangani sejumlah besar data dengan meningkatkan konkurensi. ApsaraDB for SelectDB dapat bekerja sama dengan skema indeks untuk mempercepat kueri.
Data di ApsaraDB for SelectDB disimpan dalam struktur data yang mirip dengan tabel string terurut (SSTable). Struktur data ini adalah struktur data terurut yang dapat mengurutkan dan menyimpan data berdasarkan kolom tertentu. Dalam struktur ini, Anda dapat mengkueri data secara efisien berdasarkan kolom pengurutan.
Dalam model Aggregate, Unique, dan Duplicate key, penyimpanan data dasar mengurutkan dan menyimpan data berdasarkan kolom yang ditentukan dalam pernyataan AGGREGATE KEY, UNIQUE KEY, dan DUPLICATE KEY yang digunakan untuk membuat tabel. Indeks awalan digunakan untuk mengkueri data dengan cepat berdasarkan kolom awalan tertentu setelah data diurutkan.
Contoh
Contoh berikut menggunakan 36 byte pertama dari baris data sebagai indeks awalan dari baris tersebut. Indeks awalan akan dipotong jika data bertipe VARCHAR. Contoh:
Indeks awalan dari skema berikut adalah
user_id(8 Bytes)+age(4 Bytes)+message(prefix 20 Bytes).NamaKolom
Tipe
user_id
BIGINT
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Jika awalan dari indeks awalan ditentukan sebagai kondisi kueri, kueri dapat dipercepat. Jalankan pernyataan kueri berikut:
Contoh 1:
SELECT * FROM table WHERE user_id=1829239 and age=20;Contoh 2:
SELECT * FROM table WHERE age=20;Kecepatan kueri pada Contoh 1 jauh lebih cepat daripada pada Contoh 2. Saat membuat tabel, Anda dapat mengurutkan kolom dalam urutan yang benar untuk meningkatkan efisiensi kueri.
Indeks awalan dari skema berikut adalah
user_name(20 Bytes). Indeks awalan tidak mencakup 36 byte dan dipotong karena data bertipe VARCHAR.NamaKolom
Tipe
user_name
VARCHAR(20)
age
INT
message
VARCHAR(100)
max_dwell_time
DATETIME
min_dwell_time
DATETIME
Ubah indeks awalan menggunakan tampilan yang di-materialisasi
Kolom tabel diurutkan dalam urutan tertentu saat tabel dibuat. Oleh karena itu, sebuah tabel hanya memiliki satu indeks awalan. Jika Anda mengkueri data berdasarkan kolom yang tidak sesuai dengan indeks awalan, efisiensi kueri mungkin tidak memenuhi kebutuhan bisnis Anda. Anda dapat membuat tampilan yang di-materialisasi untuk mengubah urutan kolom. Untuk informasi lebih lanjut, lihat Tampilan yang Di-materialisasi Sinkron.