오라클 PK 생성
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 PK 인덱스 삭제[편집]
-- 제약 조건 삭제 후
ALTER TABLE TBA.TB_SM_XXX
DROP CONSTRAINT PK_SM_XXX ;
-- PK 인덱스 삭제
DROP INDEX TBA.PK_SM_XXX ;
or
ALTER TABLE 테이블명
DROP PRIMARY KEY;
1.2 제약조건만 삭제 ,인덱스 삭제 하지 않음[편집]
ALTER TABLE 테이블명
DROP PRIMARY KEY KEEP INDEX;
2 PK 인덱스 생성[편집]
2.1 테이블 생성 시 제약 조건 생성[편집]
SQL> CREATE TABLE TEST1( COL1 NUMBER
, COL2 NUMBER
, CONSTRAINT PK_TEST1 PRIMARY KEY(COL1)
);
Table created.
2.2 유니크 인덱스 생성 후 PK로 지정[편집]
2.2.1 유니크 인덱스 생성[편집]
SQL> CREATE UNIQUE INDEX PK_TEST1 ON TEST1(COL1);
Index created.
2.2.2 제약조건으로 PK 인덱스 변경[편집]
SQL> ALTER TABLE TEST1 ADD CONSTRAINTS PK_TEST1 PRIMARY KEY(COL1);
2.3 ALTER TABLE .. ADD PRIMARY KEY 명령[편집]
- PK명은 SYS***으로 생성됨
ALTER TABLE TEST_TABLE
ADD PRIMARY KEY (컬럼1,컬럼2,...)
USING INDEX PX_xxx;
- USING INDEX 사용에 따른 인덱스 생성 여부
- 해당 컬럼으로 미리 만들어 둔 인덱스가 없는 경우 : CONSTRAINT 명칭과 동일한 이름으로 인덱스 자동 생성 됨
- 해당 컬럼으로 미리 만들어 둔 인덱스가 있는 경우 : 해당 인덱스를 이용함, 별도 인덱스 생성 안함
2.4 Non-Unique 인덱스를 Primary Key로 생성해야 하는경우[편집]
- 대용량의 데이터가 이미 존재해서 새로 인덱스를 만드는 것이 비효율적일 때 논리적으로 Unique하다면 이미 있는 Non-Unique 인덱스를 재활용하는것이 낫다고 판단 될때
- deferrable 옵션이 필요한 경우
- deferrable은 제약조건 수행을 데이터가 변경되는 시점이 아니라 commit 시점으로 미루는 옵션
- 특수한 환경에서 사용되는데 대용량 데이터를 처리하는 배치 작업에서 사용
- 데이터가 변경되는 건건이 제약조건을 적용하는 게 아니라 commit 단위마다 제약조건을 적용하면 성능 면에서 유리
- deferrable 옵션을 사용하려면 Primary Key 일지라도 Non-Unique 인덱스여야 한다