행위

"오라클 PK 생성"의 두 판 사이의 차이

DB CAFE

(PK 인덱스 삭제)
(제약조건만 삭제 ,인덱스 삭제 하지 않음)
29번째 줄: 29번째 줄:
 
   
 
   
  
PS1) 참고로 Primary Key 제약조건을 ALTER TABLE 테이블명 DROP  CONSTRAINT 제약조건명; 으로 제거를 해도
 
  
        인덱스와 제약조건이 동시에 생성된 Primary Key라면 인덱스도 함게 삭제가 됩니다.
 
  
+
   
 
 
PS2) Non-Unique 인덱스를 Primary Key로 생성해야만 하는 경우는 두 가지로  볼 수 있습니다.
 
 
 
      첫 번째는 대용량의 데이터가 이미 존재해서 새로 인덱스를 만드는 것이 비효율적일 때
 
 
 
      논리적으로 Unique하다면 이미 있는 Non-Unique 인덱스를 재활용하는 게 더 나을 때입니다.
 
 
 
      두 번째는 deferrable 옵션이 필요한 경우입니다.
 
 
 
      deferrable은 제약조건 수행을 데이터가 변경되는 시점이 아니라 commit 시점으로 미루는 옵션입니다.
 
 
 
      특수한 환경에서 사용되는데 대용량 데이터를 처리하는 배치 작업에서 사용할 수 있습니다.
 
 
 
      데이터가 변경되는 건건이 제약조건을 적용하는 게 아니라 commit 단위마다 제약조건을 적용하면 성능 면에서
 
 
 
      유리할 수 있습니다. deferrable 옵션을 사용하려면 Primary Key 일지라도 Non-Unique 인덱스여야만 합니다.
 
 
 
     
 
  
  

2023년 8월 17일 (목) 22:07 판

thumb_up 추천메뉴 바로가기


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.1 인덱스와 제약조건 한번에 삭제[편집]

ALTER TABLE 테이블명 
 DROP PRIMARY KEY DROP INDEX;


1.2 제약조건만 삭제 ,인덱스 삭제 하지 않음[편집]

ALTER TABLE 테이블명 
 DROP PRIMARY KEY KEEP INDEX;






2 PK 인덱스 생성[편집]

2.1 (방법1) 테이블 생성 시 제약 조건 생성[편집]

SQL> CREATE TABLE TEST1( COL1 NUMBER
                       , COL2 NUMBER
                       , CONSTRAINT PK_TEST1 PRIMARY KEY(COL1)
                       );
Table created.

2.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 (USER_ID,,);
  1. USING INDEX 사용에 따른 인덱스 생성 여부
  2. 해당 컬럼으로 미리 만들어 둔 인덱스가 없는 경우 : CONSTRAINT 명칭과 동일한 이름으로 인덱스 자동 생성 됨
  3. 해당 컬럼으로 미리 만들어 둔 인덱스가 있는 경우 : 해당 인덱스를 이용함, 별도 인덱스 생성 안함