5.4.3 テキストインデクスを定義する場合の注意点(テキストインデクスの未完状態)
テキストインデクスを定義する場合は,実表を作成後,データを格納する前にCREATE INDEX文で定義してください。
行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合,定義されたテキストインデクスは未完状態になります。未完状態のテキストインデクスは無効な状態であるため,使用できません。
未完状態を解除するには,テキストインデクスを再作成する必要があります。そのため,実表にデータを格納する前に,テキストインデクスをどの列に定義するかを検討してください。
未完状態のテキストインデクスに対して,次に示す操作を行うとエラーになります。
- ■エラーになる操作
-
-
未完状態のテキストインデクスを使用するSELECT文の実行
-
未完状態のテキストインデクスが定義された表に対するINSERT文,UPDATE文,およびDELETE文の実行
-
未完状態のテキストインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行
-
未完状態のテキストインデクスが定義された実表に対するadbmergechunkコマンドの実行
-
未完状態のテキストインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行
-
テキストインデクスの未完状態の解除方法については,「16.10.1 テキストインデクスが未完状態になったときの対処方法」を参照してください。
- メモ
-
次に示すときなどは,行を格納するセグメントが割り当てられていない状態です。このときに,CREATE INDEX文を実行すると,テキストインデクスは正常に作成されます。
-
実表の定義直後
-
TRUNCATE TABLE文の実行直後
例えば,DELETE文で表の全行を削除しても,行を格納するセグメントは割り当てられている状態のままです。そのため,DELETE文で表の全行を削除したあとにCREATE INDEX文を実行した場合,そのテキストインデクスは未完状態になります。
-