Diary/TIL

2024-04-15) 인덱싱 적용

nsean 2024. 5. 21. 23:59

오늘은 성능 개선의 방법 중 한가지인 인덱싱을 적용해주었다. 적용된 부분은 로그인의 Email 부분(정확히는 ID 역할을 하는) 과, 검색할때의 기능이다.

다음과 같은 접근 방법으로 indexing 기술을 적용했다.

개념적 탐색

DB 인덱싱은 테이블에서 데이터 검색 작업의 속도와 효율성을 향상시키기 위해 사용되는 방법이다. 인덱스는 테이블의 데이터에 대한 순서화된 포인터 목록을 생성하여 데이터베이스 관리 시스템(DBMS)이 주어진 쿼리를 만족하는 행을 신속하게 찾고 액세스할 수 있도록 돕는다.

인덱싱을 적용함으로서 기대할 수 있는 점

  1. 조회 속도 증가
    • 테이블에 대한 전체 스캔 대신, 인덱스를 사용하여 빠르게 목표를 탐색할 수 있다.
  2. 정렬된 데이터 접근 속도 증가
    • 인덱스는 기본적으로 정렬된 상태를 유지하기 때문에 ORDER BY가 사용되는 경우 성능 향상을 기대할 수 있다.

수립한 인덱스 전략

  1. 로그인 시 사용되는 쿼리문에 email 사용
    • Unique Index 적용
  2. Flight 테이블 조회 시 사용되는 컬럼
    • departure time은 범위 내에 있는 값을 찾는 데 사용 ⇒ Single Column Index 적용
    • origin과 destination은 함께 검색되므로 ⇒ Composite Index 적용

채택한 기능

  • Single Column Index
  • Composite Index
  • Unique Index
  • btree (MySQL 기반)

적용 방법

@Entity
@Table(name = "users", indexes = {
    @Index(name = "idx_email", columnList = "email", unique = true)
})

이런식으로 원하는 Entity 아래에 @Table, @Index annotation을 통하여 인덱싱을 적용해주었다.