プライマリキーと異なるキーや名前の索引を作成する

プライマリキーを定義するとデフォルトでは同じキーで同じ名前を持つユニーク索引が作成されますが、実は異なるキーや名前の索引でも作成することができます。

作成方法

以下のようにUSING INDEXでcreate index文を指定すると索引の定義を自身で指定することができます。ただし、索引キーの左端はプライマリキーと一致している必要があります。 以下のケースではプライマリキーはcol1のため、col1は必ず最初のキーに指定する必要があります。

--作成方法1
create table TBL1 (col1 number,col2 number,
constraint TBL1_PK primary key (COL1) 
using index (create index TBL1_idx1 on TBL1(col1,col2) nologging ));

--作成方法2
create table TBL1 (col1 number,col2 number);
alter table tbl1 add constraint TBL1_PK primary key(col1) 
using index (create index TBL1_idx1 on TBL1(col1,col2) nologging );

なお、この作成方法で作成するとプライマリキーの削除時に索引だけ残ってしまうという挙動の違いがでます。プライマリキー削除時に索引も一緒に作成したい場合は以下のようにdrop index句を指定します。

alter table tbl1 drop primary key drop index;
★ORACLE案件承ります