このトピックでは、単一のプライマリテーブルに対して複数の検索インデックスを作成する方法について説明します。
前提条件
Lindorm の LindormTable エンジンは、バージョン 2.8.2.3 以降である必要があります。エンジンのバージョンを表示またはスペックアップする方法の詳細については、「マイナーバージョンの更新」をご参照ください。
Lindorm LTS エンジンは、バージョン 3.8.12.5 以降である必要があります。エンジンのバージョンを表示またはスペックアップする方法の詳細については、「マイナーバージョンの更新」をご参照ください。
制限事項
単一のプライマリテーブルに作成できる検索インデックスは最大 5 つです。
同じプライマリテーブル上の検索インデックスは、互いに、または他の種類のインデックスと名前を共有することはできません。
使用方法
ワイドテーブルを作成します。
create table testTable (pk int, c1 int, c2 varchar, c3 long, primary key(pk));説明複数の検索インデックス機能はパブリックプレビュー中です。この機能を使用するには、DingTalk (ID: s0s3eg3) で Lindorm のテクニカルサポートに連絡して有効にする必要があります。
同じワイドテーブルに複数の検索インデックスを作成します。インデックスキー列とプロパティは、各検索インデックスで同じにすることができます。
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);ワイドテーブルにデータを書き込みます。データは各検索インデックスに自動的に同期されます。
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);データをクエリします。Lindorm は、クエリ条件に基づいて適切な検索インデックスを自動的に選択します。複数の検索インデックスがクエリをカバーする場合、そのうちの 1 つが選択されます。
c1、c2、および c3 列をクエリします。idx3 インデックスが自動的に選択されます。
select * from testTable where c1>0 and c2>'0' and c3>0;c1 および c2 列をクエリします。idx1 と idx3 の両方のインデックスがクエリをカバーできます。idx1 または idx3 インデックスのいずれかが選択されます。
select * from testTable where c1>0 and c2>'0';c3 列をクエリします。idx2 と idx3 の両方のインデックスがクエリをカバーできます。idx2 または idx3 インデックスのいずれかが選択されます。
select * from testTable where c3>0;
クエリのインデックスを明示的に指定します。
HINT 構文を使用して、クエリの検索インデックスを明示的に指定できます。
select /*+ _l_force_index_('idx1') */ * from testTable where c1>0 and c2>'0';インデックスのステータスをコントロールします。
ALTER INDEX 文を使用して、各インデックスのステータスを個別にコントロールできます。
alter index idx1 on testTable inactive; alter index idx1 on testTable disabled;ステータス値
説明
ACTIVE
検索インデックスはクエリに使用できます。ワイドテーブル内のデータは自動的にインデックス付けされます。
INACTIVE
検索インデックスはクエリに使用できません。ただし、ワイドテーブル内のデータは引き続き自動的にインデックス付けされます。
DISABLED
検索インデックスはクエリに使用できません。ワイドテーブル内のデータはインデックス付けされません。
説明DISABLED ステータスの検索インデックスは、他のステータスに変更できません。インデックスを再度有効にするには、REBUILD コマンドを実行する必要があります。