티스토리 뷰

PK 여러 개 설정 될 수 있는가

하나의 테이블에는 오직 하나의 기본 키(Primary Key, PK)만 설정될 수 있습니다.
그러나 이 기본 키는 하나 이상의 칼럼으로 구성될 수 있으며, 이러한 경우를 복합 키(Composite Key)라고 합니다.

복합 키는 여러 개의 칼럼을 하나의 단위로 묶어 고유한 식별자로 사용하는 것이며, 이 경우 각 칼럼의 조합은 레코드를 유일하게 식별할 수 있어야 합니다.

정리하면, PK는 테이블 마다 하나이며, 하나 이상의 속성으로 구성된 복합키를 PK를 지정할 수 있다

복합 키? 인덱스가 떠오르지 않는가?

대부분의 RDBMS에서는 PK를 설정하면 유니크 인덱스를 생성한다
PK하면 그래서 인덱스가 떠오르고,당연히 복합키가 PK라면 복합 인덱스가 생성 될 것이다

복합 인덱스가 생성되면, 그 키를 구성하는 칼럼들의 쿼리에서는 효율적이지만, 일부 컬럼만 조회 할 때는 복합 인덱스의 효율이 떨어진다.

그렇다면, 난 인덱스를 고려해서 설계-개발을 해야 하는가?

아는 만큼 보이는 데이터베이스 설계와 구축을 읽으며 결국 설계는 트레이드 오프를 고려해야 한다
정말 인덱스를 맛있게 사용한다고 하면, 테이블 설계 할 때 PK 선정을 제대로 하자
(위에 말했듯이 일단 PK는 자동으로 인덱스를 생성해주니깐!)

다음은 서비스 특징에 따라 트랜잭션이 발생하는지 파악하고, 여러 개의 컬럼에서 동시에 조회가 발생한다면 이 때 복합 인덱스를 사용하자
복합 인덱스를 사용할 때도 일단은 인덱스를 제대로 타는지 확인을 하고, 컬럼 순서에 유의해서 조회 범위를 줄여주자

복합 키를 사용할 때 주의할 점

  1. 복합 키를 구성하는 칼럼이 많을수록 SQL 쿼리가 복잡해질 가능성이 높습니다.
  2. 인덱싱과 관련된 성능 이슈가 생길 가능성이 있습니다.
  3. 애플리케이션 로직에서 복합 키를 처리하기가 단일 칼럼의 PK보다 복잡할 수 있습니다
728x90