全部产品
Search
文档中心

Lindorm:Beberapa indeks pencarian untuk satu tabel (Pratinjau publik)

更新时间:Nov 10, 2025

Topik ini menjelaskan cara membuat beberapa indeks pencarian untuk satu tabel utama.

Prasyarat

  • Mesin LindormTable untuk Lindorm harus versi 2.8.2.3 atau lebih baru. Untuk informasi selengkapnya tentang cara melihat atau meningkatkan versi mesin, lihat peningkatan versi minor.

  • Lindorm mesin LTS harus versi 3.8.12.5 atau lebih baru. Untuk informasi selengkapnya tentang cara melihat atau meningkatkan versi mesin, lihat Pembaruan versi minor.

Batasan

  • Anda dapat membuat maksimal lima indeks pencarian pada satu tabel utama.

  • Indeks pencarian pada tabel utama yang sama tidak boleh memiliki nama yang sama satu sama lain atau dengan jenis indeks lainnya.

Penggunaan

  1. Buat tabel lebar.

    create table testTable (pk int, c1 int, c2 varchar, c3 long, primary key(pk));
    Catatan

    Fitur beberapa indeks pencarian sedang dalam pratinjau publik. Untuk menggunakan fitur ini, Anda harus menghubungi dukungan teknis Lindorm di DingTalk (ID: s0s3eg3) untuk mengaktifkannya.

  2. Buat beberapa indeks pencarian pada tabel lebar yang sama. Kolom indeks dan propertinya dapat sama untuk setiap indeks pencarian.

    create index idx1 using search on testTable (c1,c2);
    create index idx2 using search on testTable (c3);
    create index idx3 using search on testTable (c1,c2,c3);
  3. Tulis data ke tabel lebar. Data tersebut secara otomatis disinkronkan ke setiap indeks pencarian.

    upsert into testTable(pk,c1,c2,c3) values (1,1,'1',1);
    upsert into testTable(pk,c1,c2,c3) values (2,2,'2',2);
    upsert into testTable(pk,c1,c2,c3) values (3,3,'3',3);
    upsert into testTable(pk,c1,c2,c3) values (4,4,'4',4);
  4. Kueri data. Lindorm secara otomatis memilih indeks pencarian yang sesuai berdasarkan kondisi kueri. Jika beberapa indeks pencarian mencakup kueri tersebut, salah satunya akan dipilih.

    1. Kueri kolom c1, c2, dan c3. Indeks idx3 dipilih secara otomatis.

      select * from testTable where c1>0 and c2>'0' and c3>0;
    2. Kueri kolom c1 dan c2. Kedua indeks idx1 dan idx3 dapat mencakup kueri tersebut. Salah satu dari indeks idx1 atau idx3 dipilih.

      select * from testTable where c1>0 and c2>'0';
    3. Kueri kolom c3. Kedua indeks idx2 dan idx3 dapat mencakup kueri tersebut. Salah satu dari indeks idx2 atau idx3 dipilih.

      select * from testTable where c3>0;
  5. Tentukan secara eksplisit indeks untuk suatu kueri.

    Anda dapat menggunakan sintaks HINT untuk menentukan secara eksplisit indeks pencarian untuk suatu kueri.

    select /*+ _l_force_index_('idx1') */ * from testTable where c1>0 and c2>'0';
  6. Kendalikan status indeks.

    Anda dapat menggunakan pernyataan ALTER INDEX untuk mengontrol status masing-masing indeks secara independen.

    alter index idx1 on testTable inactive;
    alter index idx1 on testTable disabled;

    Nilai status

    Deskripsi

    ACTIVE

    Indeks pencarian tersedia untuk kueri. Data dalam tabel lebar secara otomatis diindeks.

    INACTIVE

    Indeks pencarian tidak tersedia untuk kueri. Namun, data dalam tabel lebar tetap diindeks secara otomatis.

    DISABLED

    Indeks pencarian tidak tersedia untuk kueri. Data dalam tabel lebar tidak diindeks.

    Catatan

    Indeks pencarian dalam status DISABLED tidak dapat diubah ke status lain. Untuk mengaktifkan kembali indeks tersebut, Anda harus menjalankan perintah REBUILD.