全部产品
Search
文档中心

Tablestore:Kebijakan pemilihan indeks

更新时间:Jul 06, 2025

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.

Catatan

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.

Penting

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.

Penting
  • 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:

  1. 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.

  2. 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.

  3. 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

    Catatan

    Jika 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.

Catatan

Saat menggunakan tabel pemetaan yang dibuat untuk indeks sekunder untuk mengkueri data, Anda hanya dapat mengkueri kolom data yang terkandung dalam indeks sekunder.

  1. Eksekusi pernyataan CREATE TABLE untuk membuat tabel pemetaan untuk indeks sekunder. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.

  2. 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.

Catatan

Saat menggunakan tabel pemetaan yang dibuat untuk indeks pencarian untuk mengkueri data, Anda hanya dapat mengkueri kolom data yang terkandung dalam indeks pencarian.

  1. Eksekusi pernyataan CREATE TABLE untuk membuat tabel pemetaan untuk indeks pencarian. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Tabel.

  2. 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

Kueri cocok semua

=

  • a = 1

  • b = "hello world"

Kueri term

>

a > 1

Kueri rentang

>=

a >= 2

<

a < 5

<=

a <= 10

is null

a is null

Kueri exists

is not null

a is not null

and

a = 1 and b = "hello world"

Kueri boolean

or

a > 1 or b = 2

not

not a = 1

!=

a !=1

like

a like "%s%"

Kueri wildcard

in

a in (1,2,3)

Kueri terms

text_match

text_match(a, "tablestore cool")

Kueri match

text_match_phrase

text_match_phrase(a, "tablestore cool")

Kueri match phrase

array_extract

array_extract(col_long)

Tipe data Array dan Nested

nested_query

nested_query(`tags.tagName` = 'tag1' AND `tags.score` = 0.2)

order by

nested_query col_long

Lakukan pengurutan dan paging

limit

limit 10

min()

min(col_long)

Agregasi

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.