この例では、例: 選択リストにPERIOD列を持つ結合インデックスの作成で定義した表t1および次のテーブルを使用して、選択リストに複数列CASE式を持つ結合インデックスを作成します。
CREATE TABLE t2 ( a2 INTEGER, b2 INTEGER, c2 INTEGER, d2 PERIOD(DATE), e2 DATE, f2 CHARACTER(100)) UNIQUE INDEX(b2); CREATE TABLE t3 ( a3 INTEGER, b3 INTEGER, c3 INTEGER); CREATE JOIN INDEX ji_case AS SELECT a1,b1,c1,CASE WHEN t1.b1=t2.b2 THEN t2.a2 ELSE t3.a3 END AS a FROM t1,t2,t3 WHERE a1=a2 AND a2=a3;
次にji_caseに対してHELP JOIN INDEXリクエストを実行すると、Vantageは次のようなレポートを返します。
HELP JOIN INDEX ji_case; *** Help information returned. 3 rows. *** Total elapsed time was 1 second. Column Name Type Comment -------------------------- --------- --------------------- a1 I ? b1 I ? c1 I ? a I ?
例: 選択リストにBEGIN範囲関数を持つ結合インデックスの作成の列bで実行したように、この例の列aを使用して同じ問合わせ式を結合インデックスにマップできます。
結合インデックス定義での複数列式は、その保守に影響します。ji_caseの場合、列aの値はt1.b1、t2.a2、t2.b2、およびt3.a3に応じて異なります。このため、これらの列のいずれかが更新された場合には常に結合インデックスの保守が必要であり、結合インデックスの更新には式を解決するスプール ファイルが使用されます。例えば次のリクエストのような、基本テーブルt1に対する単純な更新は、削除条件a1=10を結合インデックスに直接評価できたとしても、ji_caseに対する直接の更新にマップすることができません。
UPDATE t1 SET b1=10 WHERE a1=10;