pk는 자동으로 인덱스가 생성된다고 알고 있었는데.. 맞나 하는 의문이 들었다..
PK(Primary Key)
- 일반적인 DBMS에서 PK는 자동으로 Index가 적용된다. => 오라클도 일반적인 DBMS겠지..?
- PK는 개념적인 값으로 여러 Tuple중 유일한 Tuple임을 보장한다.(중복될 수 없는 유일한 단일값)
- Not Null
- Object속성은 Constraint로써 제약조건으로 생성된다.
- 실제 값은 있으나 물리적으로 따로 저장하지는 않는다.
- 테이블 당 하나
Index
- Tuple들의 유일성을 보장하지 않는다. (인덱스가 걸려있는 컬럼에 중복될 수 없는 유일한 값만을 보장하고, 인덱스가 걸려있는 컬럼에 null값은 입력가능하다.)
- Object속성은 Index이다.
- 테이블에서 Tuple보다 빨리 찾기 위해 사용한다.
- index를 걸면 index를 거는 컬럼을 기준으로 새로운 자료구조(B-tree등)를 생성하여 별도의 공간에 저장한다.
- 한 테이블에 여러개 생성할 수 있다.
- PK컬럼에 인덱스가 생성되어 있지 않은 경우 PK생성시 자동으로 UNIQUE INDEX가 생성된다.
PK생성방법
1. 테이블 생성시 컬럼 레벨에서 생성하기
2. 테이블 생성시 테이블 레벨에서 생성하기
3. 테이블 생성 후 alter table명령어로 추가하기
4. 이미 컬럼에 인덱스가 생성되어 있는 상황에서 pk생성하기
: pk를 생성하려는 컬럼에 이미 인덱스가 있을 때에는 새로 인덱스를 생성하지 않고 기존에 있는 인덱스를 그대로 사용하며, Nonunique index인 경우에도 그대로 사용한다.
[참조]
https://goodgid.github.io/Index-vs-Primary-Key/
https://bae9086.tistory.com/163
http://dbcafe.co.kr/wiki/index.php/%EC%98%A4%EB%9D%BC%ED%81%B4_PK_%EC%83%9D%EC%84%B1
'차근차근 > Oracle' 카테고리의 다른 글
IN, EXISTS (0) | 2022.01.03 |
---|---|
NVL , NVL2, LNNVL (0) | 2021.12.30 |
뷰 View (0) | 2021.12.22 |
패키지 Package (0) | 2021.12.22 |
트리거(TRIGGER) (0) | 2021.12.22 |