IT

고유하지 않은 인덱스를 고유한 인덱스로 변경

itgroup 2023. 8. 1. 20:27
반응형

고유하지 않은 인덱스를 고유한 인덱스로 변경

고유하지 않은 몇 가지 제약 조건을 고유한 제약 조건으로 변경하고 싶습니다(데이터 모델이 만들어진 이후 비즈니스 규칙이 변경됨).고유한 제약 조건으로 삭제 및 재작성하지 않고 수행할 수 있는 방법이 있습니까?제 생각엔 선택권이 있을 거라고 생각했어요alter constraint명령입니다, 하지만 저는 아무것도 찾지 못했습니다.

감사합니다!!

고유하지 않은 인덱스는 고유하지 않은 인덱스로 변환할 수 없습니다.

(할 수 없는 것은 말하기 어렵습니다.SQL Language Reference의 ALTER INDEX 페이지를 보고 UNICY라는 단어를 검색하고 관련 힌트를 찾지 못한 것을 바탕으로 이 답변을 드립니다.저는 10g 대신 11g을 살펴보았지만, 10g에 존재하지만 11g에만 문서화된 기능이 몇 가지 있기 때문에 이 경우에는 아마도 더 나을 것입니다.)

그러나 고유하지 않은 인덱스를 고유 제약 조건에 사용할 수 있습니다.그러나 몇 가지 성능 고려 사항이 있습니다. 고유한 인덱스는 더 작고 더 빠릅니다.

create table my_table(a number);

create index my_table_index on my_table(a);

alter table my_table add constraint my_table_unique unique (a)
    using index my_table_index;

제약 조건을 삭제하고 다시 만들기만 하면 되는 방식으로 수정할 수 없습니다.다운타임 없이 이 작업을 수행하려면 DBMS_REDEFINITE 패키지를 확인합니다.

내 경우에는 인덱스를 삭제하고 다시 만들기만 하면 됩니다.

DROP INDEX index_name;
CREATE UNIQUE INDEX index_name ON table_name (col01,col02) TABLESPACE indx;

언급URL : https://stackoverflow.com/questions/8917339/alter-a-nonunique-index-to-a-unique-index

반응형