Tablestore dapat menyimpan volume besar data terstruktur dan mendukung berbagai jenis skema indeks untuk akselerasi kueri dan analitik dalam berbagai skenario. Topik ini menjelaskan cara memilih indeks yang digunakan saat mengeksekusi pernyataan SQL untuk mengkueri data, dengan asumsi bahwa indeks sekunder dan indeks pencarian telah dibuat untuk tabel data.
Untuk informasi lebih lanjut tentang indeks sekunder dan indeks pencarian, lihat Indeks Sekunder dan Indeks Pencarian.
Gunakan tabel pemetaan yang dibuat untuk tabel data
Jika indeks sekunder dan indeks pencarian telah dibuat untuk tabel data, kebijakan pemilihan indeks diperlukan untuk menentukan indeks yang digunakan saat mengeksekusi pernyataan SQL untuk mengkueri data. Kebijakan pemilihan indeks dapat berupa otomatis atau manual.
Pastikan bahwa tabel pemetaan telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.
Pemilihan otomatis
Saat menggunakan tabel pemetaan yang dibuat untuk tabel data untuk mengkueri data, Tablestore secara otomatis memilih tabel data, indeks sekunder, atau indeks pencarian untuk kueri data.
Jika hasil kueri harus dalam mode konsistensi kuat atau performa kueri tidak dapat ditingkatkan tanpa mengorbankan akurasi operasi agregat saat membuat tabel pemetaan untuk tabel data yang ingin dikueri, Tablestore tidak akan secara otomatis memilih indeks pencarian untuk kueri data.
Jika indeks sekunder dan indeks pencarian mencakup kolom-kolom yang ditentukan dalam pernyataan SQL, Tablestore secara otomatis memilih indeks pencarian untuk kueri data.
Kebijakan pemilihan otomatis dijalankan berdasarkan prosedur berikut:
Pilih Indeks Pencarian Secara Otomatis: Jika semua kolom yang terlibat dalam operasi filter, agregat, dan pengurutan dalam klausa WHERE terkandung dalam indeks pencarian, Tablestore secara otomatis memilih indeks pencarian untuk kueri data.
Sebagai contoh, pernyataan
SELECT A,B,C FROM sampletable WHERE A=XXX and D = YY;dieksekusi untuk mengkueri data. Jika kolom A, B, C, dan D terkandung dalam indeks pencarian yang dibuat untuk tabel data, Tablestore secara otomatis memilih indeks pencarian untuk kueri data.Jika pernyataan SQL yang menggabungkan klausa GROUP BY dan fungsi agregat sesuai dengan kemampuan agregasi dari Operasi API Pencarian indeks pencarian, Tablestore juga mengidentifikasi operator dan mendorong operator tersebut ke indeks pencarian. Untuk informasi lebih lanjut tentang dorongan operator, lihat Dorongan Komputasi.
Pilih Indeks Sekunder Secara Otomatis: Jika indeks sekunder mencakup lebih banyak kolom kunci utama yang ditentukan dalam klausa WHERE daripada tabel data dan mencakup semua kolom yang terlibat dalam pernyataan SQL, Tablestore secara otomatis memilih indeks sekunder untuk kueri data. Kondisi kunci utama dalam klausa WHERE tunduk pada prinsip pencocokan paling kiri.
Sebagai contoh, kolom kunci utama tabel data adalah a dan b, sedangkan kolom kunci utama indeks sekunder yang dibuat untuk tabel data adalah c, a, dan b. Jika kondisi kueri adalah
c = 1 and a > 1, indeks sekunder mencakup dua kolom kunci utama yang ditentukan dalam kondisi, sementara tabel data hanya mencakup satu kolom kunci utama. Dalam hal ini, Tablestore secara otomatis memilih indeks sekunder untuk kueri data.Pilih Tabel Data atau Indeks Sekunder Secara Otomatis: Tablestore memilih tabel data atau indeks sekunder berdasarkan logika optimisasi berbasis biaya (CBO) dari mesin SQL dan pola pernyataan SQL untuk kueri data.
Pemilihan manual
Anda dapat menggunakan petunjuk use index untuk secara eksplisit menentukan indeks untuk kueri data atau secara eksplisit menentukan bahwa tabel pemetaan yang dibuat untuk indeks digunakan untuk kueri data.
Dalam contoh ini, tabel data bernama sampletable, indeks pencarian bernama sampletable_search_index, dan indeks sekunder bernama sampletable_secondary_index yang dibuat untuk tabel data digunakan untuk menggambarkan operasi yang diperlukan dalam kebijakan pemilihan manual.
Tentukan Secara Eksplisit Tabel Data yang Ingin Diakses
Contoh pernyataan SQL berikut memberikan contoh cara secara eksplisit menentukan tabel data yang ingin diakses:
SELECT * FROM sampletable use index();Tentukan Secara Eksplisit Indeks Pencarian atau Indeks Sekunder yang Ingin Diakses
CatatanJika indeks tidak mencakup kolom-kolom yang terlibat dalam kueri SQL, mesin SQL secara otomatis mengkueri data dari tabel data untuk mendapatkan data yang diperlukan.
Contoh pernyataan SQL berikut memberikan contoh cara secara eksplisit menentukan indeks yang ingin diakses:
SELECT * FROM sampletable use index(sampletable_search_index); --Tentukan secara eksplisit indeks pencarian yang ingin Anda akses. SELECT * FROM sampletable use index(sampletable_secondary_index); --Tentukan secara eksplisit indeks sekunder yang ingin Anda akses.
Gunakan tabel pemetaan yang dibuat untuk indeks sekunder
Saat menggunakan indeks sekunder untuk mengkueri data, Anda dapat melakukan langkah-langkah berikut untuk menggunakan tabel pemetaan yang dibuat untuk indeks sekunder dalam kueri data.
Saat menggunakan tabel pemetaan yang dibuat untuk indeks sekunder untuk mengkueri data, Anda hanya dapat mengkueri kolom data yang terkandung dalam indeks sekunder.
Eksekusi pernyataan CREATE TABLE untuk membuat tabel pemetaan untuk indeks sekunder. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.
Eksekusi pernyataan SELECT untuk menggunakan tabel pemetaan yang dibuat untuk indeks sekunder dalam kueri data. Untuk informasi lebih lanjut, lihat Kueri Data.
Gunakan tabel pemetaan yang dibuat untuk indeks pencarian
Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat melakukan langkah-langkah berikut untuk menggunakan tabel pemetaan yang dibuat untuk indeks pencarian dalam kueri data.
Saat menggunakan tabel pemetaan yang dibuat untuk indeks pencarian untuk mengkueri data, Anda hanya dapat mengkueri kolom data yang terkandung dalam indeks pencarian.
Eksekusi pernyataan CREATE TABLE untuk membuat tabel pemetaan untuk indeks pencarian. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.
Eksekusi pernyataan SELECT untuk menggunakan tabel pemetaan yang dibuat untuk indeks pencarian dalam kueri data. Untuk informasi lebih lanjut, lihat Kueri Data.
Lampiran: pemetaan antara fitur indeks pencarian dan ekspresi SQL
Indeks pencarian menyediakan fitur yang sama dengan ekspresi SQL. Tabel berikut menjelaskan pemetaan antara fitur indeks pencarian dan ekspresi SQL.
Ekspresi SQL | Contoh | Fitur indeks pencarian |
tanpa predikat | Tidak tersedia | |
= |
| |
> | a > 1 | |
>= | a >= 2 | |
< | a < 5 | |
<= | a <= 10 | |
is null | a is null | |
is not null | a is not null | |
and | a = 1 and b = "hello world" | |
or | a > 1 or b = 2 | |
not | not a = 1 | |
!= | a !=1 | |
like | a like "%s%" | |
in | a in (1,2,3) | |
text_match | text_match(a, "tablestore cool") | |
text_match_phrase | text_match_phrase(a, "tablestore cool") | |
array_extract | array_extract(col_long) | |
nested_query | nested_query(`tags.tagName` = 'tag1' AND `tags.score` = 0.2) | |
order by | nested_query col_long | |
limit | limit 10 | |
min() | min(col_long) | |
max() | max(col_long) | |
sum() | sum(col_long) | |
avg() | avg(col_long) | |
count() | count(col_long) | |
count(distinct) | count(distinct col_long) | |
any_value() | any_value(col_long) | |
group by | group by col_long |
Referensi
Saat menggunakan indeks pencarian untuk mempercepat kueri SQL, Anda dapat menggunakan fitur-fitur berdasarkan indeks pencarian. Fitur-fitur tersebut mencakup Pencarian Teks Lengkap, Tipe Array dalam Indeks Pencarian, Tipe Nested dalam Indeks Pencarian, dan Kolom Virtual Indeks Pencarian.