Topik ini menjelaskan indeks cerdas bawaan dari ApsaraDB for SelectDB dan cara menggunakan indeks tersebut.
Informasi latar belakang
Indeks digunakan untuk memfilter atau mengkueri data dengan 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 NGram Bloom filter. Untuk informasi lebih lanjut, lihat Indeks terbalik, Indeks bitmap, Indeks Bloom filter, dan Indeks NGram Bloom filter.
Indeks peta zona
Indeks peta zona adalah informasi indeks yang secara otomatis dipertahankan untuk setiap kolom dalam format penyimpanan berorientasi kolom, termasuk Min, Max, dan jumlah nilai NULL. Indeks peta zona dibuat dan dipertahankan secara otomatis oleh ApsaraDB for SelectDB.
Indeks awalan
ApsaraDB for SelectDB adalah 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 data 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 yang ditentukan setelah data diurutkan.
Contoh
Contoh berikut menggunakan 36 byte pertama dari baris data sebagai indeks awalan. 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 dibandingkan dengan Contoh 2. Saat membuat tabel, urutkan kolom dengan 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
Modifikasi indeks awalan menggunakan tampilan yang dimaterialisasi
Kolom tabel diurutkan dalam urutan tertentu saat pembuatan tabel. 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. Untuk meningkatkan efisiensi, Anda dapat membuat tampilan yang dimaterialisasi guna memodifikasi urutan kolom. Untuk informasi lebih lanjut, lihat Tampilan yang dimaterialisasi sinkron.