복합 유니크 키
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(
columnNames = {"companyId","date"}
)
})
public class DividendEntity {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long companyId;
private LocalDateTime date;
private String dividend;
복합 유니크키는 여러 컬럼을 묶어서 유니크한 제약 조건을 만드는 기능이다.
단일 컬럼이 아닌 여러 컬럼의 조합이 중복되지 않도록 보장한다.
이는 데이터의 무결성을 보장한다.
예를 들어 userId와 userEmail을 복합 유니크키로 설정 시 사용자가 같은 이메일 주소를 여러번 등록하는 것을 방지할 수 있다.
이 경우 각 사용자는 서로 다른 이메일을 등록할 수 있지만, 같은 이메일을 다시 등록하려고 하면 오류가 발생한다.
그리고 효율적인 데이터 조회가 가능하다.
복합 유니크 키는 내부적으로 인덱스를 생성한다. 해당 인덱스를 통해 데이터 조회 시 빠른 검색이 가능하게 하고 복합 유니크 키가 설정된 테이블에서 해당 키를 기반으로 데이터를 조회하면, 단일 컬럼에 인덱스를 사용하는 것처럼 효율적인 검색이 가능하다.
복합 유니크 키가 설정되지 않은 상태에서는 풀 테이블 스캔이 발생할 수 있지만, 복합 유니크키가 설정되면 B-트리 인덱스를 통해 검색 성능이 향상된다.
그리고 중복 데이터 방지 및 검색 성능 최적화가 가능하다.
복합 유니크 키는 중복 데잉터 입력을 막는 동시에, 정확한 조건에 대한 검색 성능을 최적화 하는 이점을 가진다.
DB Index
- Cardinality
- 중복된 데이터가 많으면 Cardinality 가 낮다(이런 경우 Index를 걸어도 성능상의 이점을 보기 어렵다.), 없다면 Cardinality가 높다.(index의 성능상 이점이 높다)
'프로젝트 이슈 및 몰랐던점 정리 > StockDividendAPI' 카테고리의 다른 글
[설정] Spring Security와 JWT로 로그인 기능 구현 (0) | 2024.10.07 |
---|---|
[설정] Redis Cache 사용하기 및 스프링부트로 Redis 접근하기 (0) | 2024.10.07 |
[설정] 삽입하려는 데이터의 중복 키 발생 시 레코드 무시하고 삽입하는 방법 (0) | 2024.10.07 |
[설정] 백엔드 API Pageable 사용하기 (0) | 2024.10.07 |
[설정] 자동완성 검색 기능 Trie와 DB LIKE문 활용 (0) | 2024.10.07 |