티스토리 뷰
PK 여러 개 설정 될 수 있는가
하나의 테이블에는 오직 하나의 기본 키(Primary Key, PK)만 설정될 수 있습니다.
그러나 이 기본 키는 하나 이상의 칼럼으로 구성될 수 있으며, 이러한 경우를 복합 키(Composite Key)라고 합니다.
복합 키는 여러 개의 칼럼을 하나의 단위로 묶어 고유한 식별자로 사용하는 것이며, 이 경우 각 칼럼의 조합은 레코드를 유일하게 식별할 수 있어야 합니다.
정리하면, PK는 테이블 마다 하나이며, 하나 이상의 속성으로 구성된 복합키를 PK를 지정할 수 있다
복합 키? 인덱스가 떠오르지 않는가?
대부분의 RDBMS에서는 PK를 설정하면 유니크 인덱스를 생성한다
PK하면 그래서 인덱스가 떠오르고,당연히 복합키가 PK라면 복합 인덱스가 생성 될 것이다
복합 인덱스가 생성되면, 그 키를 구성하는 칼럼들의 쿼리에서는 효율적이지만, 일부 컬럼만 조회 할 때는 복합 인덱스의 효율이 떨어진다.
그렇다면, 난 인덱스를 고려해서 설계-개발을 해야 하는가?
아는 만큼 보이는 데이터베이스 설계와 구축을 읽으며 결국 설계는 트레이드 오프를 고려해야 한다
정말 인덱스를 맛있게 사용한다고 하면, 테이블 설계 할 때 PK 선정을 제대로 하자
(위에 말했듯이 일단 PK는 자동으로 인덱스를 생성해주니깐!)
다음은 서비스 특징에 따라 트랜잭션이 발생하는지 파악하고, 여러 개의 컬럼에서 동시에 조회가 발생한다면 이 때 복합 인덱스를 사용하자
복합 인덱스를 사용할 때도 일단은 인덱스를 제대로 타는지 확인을 하고, 컬럼 순서에 유의해서 조회 범위를 줄여주자
복합 키를 사용할 때 주의할 점
- 복합 키를 구성하는 칼럼이 많을수록 SQL 쿼리가 복잡해질 가능성이 높습니다.
- 인덱싱과 관련된 성능 이슈가 생길 가능성이 있습니다.
- 애플리케이션 로직에서 복합 키를 처리하기가 단일 칼럼의 PK보다 복잡할 수 있습니다
'Computer Science > DB' 카테고리의 다른 글
엔티티타입, 통합과 분리의 기준 (1) | 2023.09.02 |
---|---|
식별자와 비식별자 관계 설정 이것만은 알고 해야 (0) | 2023.09.02 |
- Total
- Today
- Yesterday
- 개발/OOP
- 개발/네트워크
- 개발/언어론
- 개발/프레임워크&라이브러리
- 카카오테크캠퍼스
- 개발/언어/Java
- 알고리즘
- 개발/Electron
- 개발/CS/알고리즘
- 개발/보안
- 개발/MySQL
- 취업
- ⌨️Developer/보안
- 대외활동/카카오테크캠퍼스
- AI/GPT
- 개발/컴퓨터네트워크
- 개발/환경
- 개발
- 개발/Java/Spring
- 개발/에러
- 개발/Java
- ai
- ⌨️Developer
- electron
- 카테캠
- 개발/CS/OS
- AI/ML
- 카카오 테크 캠퍼스
- 개발/webrtc
- 개발/Tools/프레임워크/Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |