Index

데이터베이스에서의 인덱스 설정

인덱스는 데이터베이스에서 데이터를 빠르게 검색하기 위해 사용되는 구조입니다. @Index를 사용하여 특정 컬럼 또는 컬럼 그룹에 인덱스를 생성하고 관리할 수 있습니다.

@Index를 사용하여 인덱스를 정의하면 데이터베이스에서 데이터를 효율적으로 검색할 수 있습니다. 이를 통해 쿼리의 성능을 향상시킬 수 있습니다. 주의할 점은 @Index는 JPA의 스키마 생성 기능에 의해 DDL문을 생성할 때만 영향을 준다는 점입니다. 따라서 특정 데이터베이스에서는 스키마 생성 시점에서 인덱스가 생성되지 않을 수도 있으므로, 인덱스를 명시적으로 생성해야 할 수도 있습니다.

사용 예시

@Entity
@Table(name = "users")
@Index(name = "idx_username", columnList = "username")
public class UserEntity {
    // ...
    @Column(name = "username")
    private String username;
    // ...
}

위의 예시에서 @Index 어노테이션은 UserEntityusername 컬럼에 인덱스를 생성하는 데 사용됩니다. name 속성은 인덱스의 이름을 지정하고, columnList 속성은 인덱스를 생성할 컬럼 이름을 지정합니다

인덱스 이름

@Indexname 속성을 사용하여 인덱스의 이름을 지정할 수 있습니다. 기본적으로는 자동으로 생성되는 이름이 사용됩니다.

컬럼 리스트

@IndexcolumnList 속성을 사용하여 인덱스를 생성할 컬럼의 이름 또는 컬럼 그룹을 지정할 수 있습니다. 컬럼 이름은 쉼표로 구분하여 여러 개를 지정할 수 있습니다.

유니크 인덱스

@Indexunique 속성을 사용하여 유니크 인덱스를 생성할 수 있습니다. uniquetrue로 설정하면 중복된 값이 허용되지 않는 유니크 인덱스가 생성됩니다.

인덱스 컬럼 길이

@IndexcolumnList 속성 내에서 특정 컬럼의 길이를 지정할 수 있습니다. 예를 들어, columnList = "username(30)"과 같이 사용하여 username 컬럼의 길이를 30으로 제한할 수 있습니다.

인덱스 위치

@IndexcolumnList 속성 내에서 컬럼의 위치를 지정할 수 있습니다. 예를 들어, columnList = "2, 1"과 같이 사용하여 두 개의 컬럼의 순서를 지정할 수 있습니다.

테이블 수준 인덱스

@Index를 엔티티 클래스 위에 선언하면 해당 테이블 전체에 대한 인덱스를 생성할 수 있습니다.

Last updated

Was this helpful?