16.1.2 インデクス再作成の効果
adbidxrebuildコマンドを実行すると,次に示す状態のインデクスを再作成できます。
-
未完状態のインデクス
-
一意性制約違反状態のユニークインデクス
-
正常な状態のインデクス
それぞれのインデクスを再作成したときの効果について,次に示します。
- 〈この項の構成〉
(1) 未完状態のインデクスの再作成(インデクスの未完状態の解除)
行を格納するセグメントが割り当てられている状態の表に対してインデクスを定義すると,新しく定義したインデクスは未完状態になります。未完状態のインデクスを使用した検索はエラーとなります。
このとき,未完状態のインデクスが定義されている表に対してadbidxrebuildコマンドを実行すると,インデクスの未完状態が解除され,インデクスを使用して検索できるようになります。
行を格納するセグメントが割り当てられている状態については,マニュアルHADB システム構築・運用ガイドのB-treeインデクスを定義する場合の注意点(B-treeインデクスの未完状態)を参照してください。
(2) 一意性制約違反状態のユニークインデクスの再作成(一意性制約違反状態の解除)
ユニークインデクスが一意性制約に違反している状態(一意性制約違反状態)の場合,一意性制約を満たしているときと比べて,検索効率が悪くなるおそれがあります。
この場合,一意性制約違反の原因となった行をSQL文で削除したあとで,adbidxrebuildコマンドでユニークインデクスを再作成すると,一意性制約違反状態を解除できます。
一意性制約違反の解除方法については,マニュアルHADB システム構築・運用ガイドのトラブルシュートのB-treeインデクスに関するトラブルの一意性制約に違反した場合の対処方法(KFAA61205-Wメッセージが出力された場合)を参照してください。
(3) 正常な状態のインデクスの再作成
adbidxrebuildコマンドを使用して,未完状態や一意性制約違反状態ではない(正常な状態の)インデクスを再作成することもできます。この場合,次に示す効果が期待できます。
- B-treeインデクスの場合
-
行の更新,追加,または削除を繰り返した表に定義されているB-treeインデクス(主キーに対応するB-treeインデクスを含む)を再作成すると,次に示す効果があります。
-
行の更新または削除によって無効となったデータをB-treeインデクスから削除できます。そのため,B-treeインデクスが格納されているDBエリアの使用量を削減できます。
-
行の追加または更新によって使用された,インデクスページ内の未使用領域を再度確保できます。そのため,インデクスページスプリットの発生頻度を抑えることができます。インデクスページ内の未使用領域については,マニュアルHADB システム構築・運用ガイドのデータベースの設計のB-treeインデクスの設計のB-treeインデクスのインデクスページ内の未使用領域の確保(PCTFREE)を参照してください。
-
- テキストインデクスの場合
-
行の更新,追加,または削除を繰り返した表に定義されているテキストインデクスを再作成すると,次に示す効果があります。
-
行の更新または削除によって発生した,実際にはデータが存在しないデータページへのリンクをテキストインデクスから削除できます。そのため,テキストインデクスを使用した検索性能が向上します。また,テキストインデクスが格納されているDBエリアの使用量を削減できます。
-
行の追加または更新によって使用された,インデクスページ内の未使用領域を再度確保できます。そのため,インデクスページスプリットの発生頻度を抑えることができます。インデクスページ内の未使用領域については,マニュアルHADB システム構築・運用ガイドのデータベースの設計のテキストインデクスの設計のテキストインデクスのインデクスページ内の未使用領域の確保(PCTFREE)を参照してください。
-
- レンジインデクスの場合
-
行の更新または削除を繰り返した表に定義されているレンジインデクスを再作成すると,次に示す効果があります。
-
レンジインデクスの値域の幅が狭くなり,検索性能が向上します。
-
レンジインデクスの不要な値域情報が削除されるため,レンジインデクスが格納されているDBエリアの使用量を削減できます。
-