[postgres] 복합기본키(PK) 지정 순서

GuruneLee·2023년 1월 1일
0

Let's Study 공부해요~

목록 보기
35/36
post-thumbnail

복합기본키란 다음과 같이 여러 칼럼의 튜플을 기본키로 지정하는 것이다.

CREATE TABLE MY_TABLE
(
    ID      BIGINT          NOT NULL,
    TYPE    VARCHAR(100)    NOT NULL,
 
    PRIMARY KEY (ID, TYPE)
)

이때, 쉽게 간과할 수 있는 사실이 있는데, 바로 복합기본키는 지정하는 순서가 중요하다는 것이다.

예를 들어 다음과 두 ddl은 다른 결과를 낳는다.

PRIMARY KEY (ID, TYPE)
PRIMARY KEY (TYPE, ID)

그 이유는 b-tree 인덱싱에 있다.

postgres는 PK가 지정되면 자동으로 index테이블을 생성한다. (postgresql 공식 문서)

이 때, 이 인덱스는 b-tree 자료구조를 사용하는데,
b-tree 특성상 먼저온 칼럼을 기준으로 분기를 하기 때문에, 이렇게 생성된 index는 뒤에 온 칼럼 기준으론 사용하지 못한다.


여기 이에 대한 내용을 대략 설명한 블로그가 있다. 참고하자.
DB - 결합인덱스 및 컬럼 순서 결정 방법

profile
Today, I Shoveled AGAIN....

0개의 댓글