기본 키를 변경하는 2 가지 방법을 보았습니다. 접근 방법 (1), (그것뿐만 아니라 해당 인덱스를 삭제) 후 즉기본 키 변경
alter table TABLE_NAME drop constraint PK_TABLE_NAME drop index;
alter table TABLE_NAME
add constraint PK_TABLE_NAME PRIMARY KEY ("COL1")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE;
COMMIT;
/
두 번째 방법은 indiviually 모든 단계를하고있는에있는 새 인덱스가 기본 키를 만들어 기본 키를 삭제하는 무언가이다
alter table TABLE_NAME drop constraint PK_TABLE_NAME;
drop index PK_TABLE_NAME;
CREATE UNIQUE INDEX PK_TABLE_NAME ON TABLE_NAME
(COL1)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
alter table TABLE_NAME add constraint PK_TABLE_NAME PRIMARY KEY ("COL1") USING INDEX PK_TABLE_NAME;
COMMIT;
/
즉
그래서 지금은 내 질문- 는이 두 방식은 단계가 갈라는 사실을 제외하고는 백엔드에서 다른 아무것도했다있다인가?
- "COL1" 또는 따옴표없이 COL1과 같이 열 이름을 언급 할 수 있습니다. 이 두 가지 접근 방식이 차이가 있습니까?
- TRILLION OF DATA가있는 테이블에서이 단계가 실행되고 있다고 가정 할 때, 이들 중 하나라도 다른 것에 성능 향상이 있습니까?
두 번째 방법으로 색인을 생성하는 동안 '병렬'을 사용하는 것이 좋았습니다. – pahariayogi