Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


5.3.1 B-treeインデクスを定義する場合の注意点(B-treeインデクスの未完状態)

B-treeインデクスを定義する場合は,実表を作成後,データを格納する前にCREATE INDEX文で定義してください。

行を格納するセグメントが割り当てられている状態の実表に対してB-treeインデクスを定義した場合,定義されたB-treeインデクスは未完状態になります。未完状態になると,定義したB-treeインデクスは無効な状態となり,使用できなくなります。

未完状態を解除するには,B-treeインデクスを再作成する必要があります。そのため,実表にデータを格納する前に,B-treeインデクスをどの列に定義するかを事前によく検討してください。

未完状態のB-treeインデクスに対して,次に示す操作を行うとエラーになります。

■エラーになる操作
  • 未完状態のB-treeインデクスを使用するSELECT文の実行

  • 未完状態のB-treeインデクスが定義された表に対するINSERT文,UPDATE文,およびDELETE文の実行

  • 未完状態のB-treeインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

  • 未完状態のB-treeインデクスが定義された実表に対するadbmergechunkコマンドの実行

  • 未完状態のB-treeインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

B-treeインデクスの未完状態の解除方法については,「15.9.1 B-treeインデクスが未完状態になったときの対処方法」を参照してください。

メモ

次に示すときなどは,行を格納するセグメントが割り当てられていない状態です。このときに,CREATE INDEX文を実行すると,B-treeインデクスは正常に作成されます。

  • 実表の定義直後

  • TRUNCATE TABLE文の実行直後

例えば,DELETE文で表の全行を削除しても,行を格納するセグメントは割り当てられている状態のままです。そのため,DELETE文で表の全行を削除したあとにCREATE INDEX文を実行した場合,そのB-treeインデクスは未完状態になります。