테이블 생성시에 primary key 생성 관련해서 질문 드립니다.
아래의 두가지로 생성할 때의 차이점이 어떤게 있을까요?
방법1)
create table TEST_TABLE
(
comp_id varchar2(4) not null,
dept_id varchar2(4) not null
);
create unique index PK_TEST on TEST_TABLE (comp_id,dept_id);
alter table TEST_TABLE add (primary key (comp_id,dept_id));
방법2)
create table TEST_TABLE
(
comp_id varchar2(4),
dept_id varchar2(4),
constraint PK_TEST primary key (comp_id,dept_id)
);
1번과 2번이 차이를 굳이 따지는게 중요한지는 모르겠지만.
마농님 말씀데로 pk의 경우는 제약사항 뷰에 이름이 다르게 지정이 됩니다.
원래 pk를 생성하게 되면 기본적으로 constraint 와 인덱스 가 둘다 자동으로 생성되게 되어 있기 때문에
굳이 유니크 인덱스를 만들 필요가 없어 집니다.
pk (unique + not null) , uk constraint 의 경우는 자동으로 인덱스가 생성이 됩니다.
이유는 아실지 모르겠으나 pk든 uk든 unique한 속성을 가지고 있습니다.
데이터를 변경 (insert 혹은 update 등)를 할시에 unique한 속성에 대한 데이터값들을 빠르게 조회해서
unique한지 아닌지 판단을 해야 되기 때문에 인덱스가 자동 생성이 되는 것일 거에요.
그래서 굳이 unique인덱스를 생성하지 않으셔도 자동으로 생성되기 때문에
다르게 말하면 필요 없는 작업이 되게 됩니다.