5.3.5 ユニークインデクスを定義する列を決めるときの考慮点
ユニークインデクスとは,キー値(B-treeインデクスを定義した列の値)の重複を許さないB-treeインデクスのことです。キー値の重複を許さない制約を一意性制約といいます。
B-treeインデクスを定義する列に対して,重複したキー値がないことを保証したい場合に,ユニークインデクスを定義することを検討してください。
- メモ
-
実表の定義時に主キー(一意性制約定義)を定義した場合も,ユニークインデクスが自動的に定義されます。主キーについては,「5.2.9 主キー(一意性制約定義)の指定(PRIMARY KEY)【シングルチャンク表】」を参照してください。
ただし,次に示す場合は重複したキー値があっても重複キー値にはなりません(一意性制約に違反しません)。
-
ナル値を含むキー値の場合
-
複数列インデクスで,どれか1つの列の値が異なる場合
ユニークインデクスは,CREATE INDEX文のUNIQUEを指定することで定義できます。UNIQUEを指定した場合,キー値が重複するようなデータの更新および追加はできません。また,あるキー値を持つ行を追加しようとした際に,実行中の別のトランザクションがすでに同じキー値を持つ行を追加していた場合も追加できません。
- 重要
-
ユニークインデクスを定義していても,次の場合には一意性制約は保証されません(キー値の重複が発生するおそれがあります)。
-
adbimportコマンドでデータインポートした場合
-
adbidxrebuildコマンドでB-treeインデクスを再作成した場合
-