索引に関して正しい記述はどれですか。
索引に関して正しい記述はどれですか。
A表をDROPすると、その表に作成されていた索引も自動的に削除される✓
B表をTRUNCATEすると、その表の索引も削除される
C1つの表に対して複数の索引を作成できる✓
D同じ列・同じ順序の組み合わせで複数の索引を作成できる
E索引を削除すると、対応する表のデータも削除される
解説正答:A・C
索引は表に従属するオブジェクトです。表とのライフサイクルの関係を押さえるのがポイントです。
各選択肢の検討:
- A(正):
DROP TABLEを実行すると、その表の索引・制約もまとめて削除される。 - B(誤):
TRUNCATE TABLEは 行を削除するが構造は保持 する。索引の定義は残り、空の状態になるだけ。 - C(正):1つの表に複数の索引を作成できる(異なる列や列の組み合わせに対して)。
- D(誤):まったく同じ列・同じ順序 の組み合わせに対して、複数の索引は作成できない(
ORA-01408: そのような列リストはすでに索引付けされています)。 - E(誤):索引を
DROPしても、表のデータには影響しない。索引は検索高速化のための補助構造にすぎない。
DROP と TRUNCATE の比較:
| 操作 | 行データ | 表構造 | 索引 |
|---|---|---|---|
| DROP TABLE | 削除 | 削除 | 削除 |
| TRUNCATE TABLE | 削除 | 保持 | 保持 |