[MongoDB] Compound Index와 ESR Rule

기훈·2024년 3월 24일
0

MongoDB

목록 보기
19/28

Compound Index는 여러 필드로 구성된 인덱스다. 여러 필드로 생성되기 때문에 필드의 순서에 따라 정렬을 하게 된다.
-> 필드의 순서가 중요하고, Compound Index만의 중요한 특성이 존재한다.

  1. 인덱스의 선행필드(일부필드만) 사용해도 Compound Index를 사용할 수 있다.

    (item만 쿼리하거나 item,stock로 쿼리를 해도 위의 인덱스를 사용한다. item 인덱스나 item, stock으로 따로 인덱스를 생성해줄 필요가 없다)

ESR Rule

  • 데이터베이스의 최대 효율을 위해 사용하는 규칙
    E: Equality First
    E->R: Equality Before Range
    E->S: Equality Before Sort
    S->R: Sort Before Range
    E->S->R: Equality Sort Range

왜 S->R일까?
-> 인덱스를 더 많이 읽더라도, 정렬을 먼저 하는것이 좋은 경우가 많다.

반례)
ESR Rule은 항상 성립하지 않는다.

ACE라는 유저가 2022년에 한번만 게임을 플레이했다고 가정해보자.

범위조건에 해당하는 date 필드에 대한 데이터가 적음에도 불구하고(1개), date에 해당하는 전체 기간에 대해서 인덱스가 탐색하고 있다. 이런 경우에는 굳이 정렬을 하기보단 E-R형태로 실행하는 것이 더 효율적이다.

0개의 댓글