ORACLE 勝手に作られる索引
ORACLEデータベースには勝手とは言わないまでも、自動で作成される索引があるのは知っていましたか?。ちなみに19cのAutomatic indexingの話ではありません。それはテーブル制約である、主キーもしく一意制約を付けると自動的に索引が作成されるのです。実際、ORACLEの索引の管理にも「キーおよび一意キーには自動的に索引が作成されます...」という記述がありますね。実際に確認してみましょう。
例)
CREATE TABLE tig
(
id VARCHAR2(10),
name VARCHAR2(50),
gender NUMBER(1,0),
CONSTRAINT pk1 PRIMARY KEY(id),
CONSTRAINT uk1 UNIQUE(name)
)
select * from user_indexes; --索引表示
確かに索引が作成されていることが分かりますね。さて、最後はおまけでテーブルをdropして、索引も消えることを確認してみます。
drop table tig;
select * from user_indexes;
結果はno data found ということで、索引も一緒にドロップされました。ということで、今回は制約追加により、自動的に作成される索引があるということを見ていきました。
さらなる余談ですが、drop後にフラッシュバックドロップを行い、テーブルを戻した場合、索引は戻るか見てみます。
flashback table tig to before drop;
戻っている??比較してみるとINDEX_NAMEが変わっていますね。この辺の検証はまた今度、取り上げて見たいと思います。
※ちなみに外部キーによる索引は自動作成されません
※フラッシュバックドロップをしても外部キーは戻ってこないぞ