uk, fk, pk에 인덱스 적용해보기

이수찬·2023년 5월 2일
0

pk, fk, uk 생성시 index는 자동으로 생성되는지 한번 확인해보자.

  1. pk에 인덱스 적용하기
  • Fruit Entity
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Fruit {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long fruitId;

    private String name;

    private Integer price;

    private String origin;
}

Entity를 만들고 위와 같이 서버를 실행하면 pk index가 생성되는것을 알 수 있다.

pk 생성시 자동적으로 클러스터형 인덱스가 생성된다.

  1. uk에 인덱스 적용하기
alter table fruit
    add unique key (name);

uk 역시 쿼리를 통해 uk를 컬럼에 지정하면 자동적으로 index가 생성되는 것을 알 수 있다.

uk 생성시 보조 인덱스가 자동으로 생성된다.

  1. fk에 인덱스 적용하기
  • Class Entity
@Entity
public class Class {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long classId;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "fruit_id")
    private Fruit fruit;
}

임시로 Class라는 Entity를 만들고 외래키를 부여하면 자동적으로 위와 같이 fk index가 만들어지는 것을 볼 수 있다.

사실 fk는 두 테이블간의 관계이기에 index와는 관계가 없다.
그렇기에 DB마다 fk의 인덱스 자동생성이 지원되기도 하고 안되기도 한다.
위의 경우 MYSQL를 사용하기에 자동으로 보조형 인덱스가 생성된다.

0개의 댓글