Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


4.20.4 使用例

使用例を示します。

前提とする表定義及びインデクス定義

CREATE TABLE TBL1(ID INTEGER, REGDATE DATE, CHI XML); 
CREATE INDEX IID ON TBL1(ID);
CREATE INDEX ICHI USING TYPE IXXML ON TBL1(CHI) IN ((RUL01)) PLUGIN 'INDEX_V2'; 

<プラグインインデクスで他インデクス絞り込み結果を利用する例>

例1:

プラグインインデクスを利用できる条件とB-Treeインデクスを利用できる条件をAND演算すると,プラグインインデクスで他インデクス絞り込み結果を利用できます。

SELECT ID FROM TBL1 WITH INDEX (IID, ICHI)
WHERE ID >= 100 AND CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインのサーチ条件種別: SearchCnd : IS TRUE (AND))
例2:

プラグインインデクスを利用できる条件とプラグインインデクスを利用できる条件をAND演算すると,2番目に指定したプラグインインデクスを利用できる条件に対して,プラグインインデクスで他インデクス絞り込み結果を利用できます。

SELECT ID FROM TBL1 
WHERE CONTAINS(CHI,'root[time{"180"}]') IS TRUE AND CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインのサーチ条件種別: SearchCnd : IS TRUE (AND))
例3:

プラグインインデクスを利用できる二つの条件とB-Treeインデクスを利用できる条件をAND演算すると,プラグインインデクスを利用できる両方の条件に対して,プラグインインデクスで他インデクス絞り込み結果を利用できます。このとき,2番目に指定したプラグインインデクスの利用時には,B-Treeインデクスを利用できる条件と1番目に指定したプラグインインデクスを利用できる条件とのAND演算の絞り込み結果の行識別子集合の利用ができます。

SELECT ID FROM TBL1 WITH INDEX (IID, ICHI, ICHI)  
WHERE ID >= 100 AND CONTAINS(CHI,'root[time{"180"}]') IS TRUE 
      AND CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインのサーチ条件種別: SearchCnd : IS TRUE (AND))

<プラグインインデクスで他インデクス絞り込み結果を利用しない例>

例1:

インデクスを利用できる条件としてプラグインインデクスに対する条件を一つしか指定していないのでプラグインインデクスで他インデクス絞り込み結果を利用できません。

SELECT ID FROM TBL1 WHERE CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインが該当部分)
例2:

AND演算ではなく,OR演算を指定しているのでプラグインインデクスで他インデクス絞り込み結果を利用できません。

SELECT ID FROM TBL1 WITH INDEX (IID, ICHI)  
WHERE ID >= 100 OR CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインが該当部分)
例3:

プラグインインデクスを利用できる条件とインデクスを利用できない条件をAND演算しているのでプラグインインデクスで他インデクス絞り込み結果を利用できません。

SELECT ID FROM TBL1  
WHERE REGDATE = '2000-01-01' 
      AND CONTAINS(CHI,'root[elm{"1"}]') IS TRUE;
(アンダーラインが該当部分)