CREATE INDEX ステートメントは、DB2 Everyplace 表に索引を作成するために使用します。
呼び出し
このステートメントは、アプリケーション・プログラム内で DB2 CLI 関数を用いて使用することができます。 また、CLP を介して出すこともできます。
構文
>>-CREATE--INDEX--索引名--ON--表名------------------------------> .-,---------------------------------. V .-ASC--. | >--(----+-列名----------------+--+------+-+--)----------------->< +-UCASE--(--| 式 |--)-+ '-DESC-' '-LCASE--(--| 式 |--)-'
説明
各列名は、表の列を示す、修飾されていない名前でなければなりません。使用する列は 8 列以下としてください。 列名を繰り返すことはできません (SQLSTATE 42711)。
指定された各列の長さは 1024 バイトを超えてはなりません。
LCASE 関数または LOWER 関数は、SBCS 文字がすべて小文字に変換されたストリングを戻します。つまり、文字 A から Z が文字 a から z に変換され、発音区別符号が付いた文字があれば、それらは同等の小文字に変換されます。
引き数は、値のデータ・タイプが CHAR か VARCHAR である式でなくてはなりません。
上記の関数の結果は、引き数と同じデータ・タイプと長さの属性を持つことになります。引き数がヌル値もとる場合は、結果がヌルになることがあります。つまり、 引き数がヌルであれば、結果はヌル値になります。
EMPLOYEE 表の列 JOB の値に含まれる文字は小文字で戻されることを確認してください。例えば、次のようにします。
SELECT LCASE(JOB) FROM EMPLOYEE WHERE EMPNO = '000020';
規則
CREATE INDEX IDX1 ON EMPLOYEE (JOB ASC) CREATE INDEX IDX1 ON EMPLOYEE (JOB DESC)通常は、索引は順序付けの方向を指定しないで作成してください。 一般的に、索引の数が少ないほど索引の保守の手間が省けます。
CREATE INDEX J1 ON T (A, B, C, D, E, F, G, K)この場合、T (A,B,C,D) に別の索引を作成する必要はありません。
CREATE INDEX <索引名> ON <表名> ($dirty)
ダーティー・ビットの詳細については、ダーティー・ビットを参照してください。
例
EMPLOYEE 表に JOB_BY_DPT という名前の索引を作成します。 索引項目を各部門 (WORKDEPT) 内でジョブ名称 (JOB) の昇順で並べます。
CREATE INDEX JOB_BY_DPT ON EMPLOYEE (WORKDEPT, JOB)
関連した解説