이번 시간에는 오라클 데이터베이스에서 기본키 인덱스를 일반 인덱스로 대체하는 방법에 대해 알아보겠습니다. 이 방법은 기본키 인덱스가 굳이 필요 없는 테이블에 대하여, 기본키를 없애고 논-유니크 인덱스로 대체하는 방법입니다!
기본키를 일반 인덱스로 대체하는 작업 내용은 다음과 같은 순서로 진행할 예정입니다~ 😘
- 기본키 인덱스 삭제
- 대체 인덱스 생성
- NULL 허용 여부 설정
- 인덱스 대체
기본키 삭제
먼저, 기존의 기본키를 삭제해야 합니다. 이를 위해 ALTER TABLE 문을 사용합니다.
ALTER TABLE USER_NAME.TABLE_NAME DROP PRIMARY KEY CASCADE;
그리고 기존의 기본키에 해당하는 인덱스도 삭제합니다.
DROP INDEX USER_NAME.PRIMARY_KEY_INDEX_NAME;
대체 인덱스 생성
기본키 인덱스를 삭제하고, 해당 컬럼에 대한 새로운 인덱스를 생성할 차례입니다. 다음 쿼리는 새로운 인덱스를 생성하는 예시입니다. 컬럼 그룹은 대상 테이블에 맞추어 추가해 주세요.
CREATE INDEX USER_NAME.INDEX_NAME ON USER_NAME.TABLE_NAME
(COLUMN_NAME)
LOGGING
TABLESPACE TABLESPACE_NAME
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64M
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
NULL 허용 설정
마지막으로, 해당 컬럼에 대해 NULL 값을 허용하지 않도록 설정하겠습니다. 적어도 기본키였던만큼 'Not Null' 정도는 유지하려는 목적이랍니다. 필요 시 생략해도 괜찮을 것입니다.
ALTER TABLE TABLE_NAME MODIFY ( COLUMN_NAME NOT NULL );
이제 기본키 인덱스를 일반 인덱스로 대체하는 작업을 완료하였습니다!