몽고DB에서의 인덱스 키 방향

hoyong.eom·2023년 10월 7일
0

몽고DB

목록 보기
2/2
post-thumbnail

몽고DB

인덱스 키 방향

두개 또는 그 이상의 검색 조건으로 정렬 할 때는 인덱스의 키 방향이 서로 달라야 한다.
즉, 복합 정렬을 서로 다른 방향으로 최적화 하기 위해서는 방향이 맞는 인덱스를 사용해야한다. (단일 정렬은 상관 없다.)

만약 users라는 컬렉션에 age와 username이 필드가 있다고 가정하자.

이 컬렉션에 대해서 age는 오름차순, username은 내림차순으로 정렬된값을 쿼리해야한다면 인덱스의 방향 또한 동일하게 맞춰야한다.

만약, 아래와 같은 인덱스만 존재한다면 정렬 방향을 맞춰 인덱스를 추가로 생성해줘야 한다.

{"age":1, "username":1}
->
{"age":1, "username":-1}

그리고 역방향 인덱스(각 방향에 -1을 곱한다.)는 서로 동등함을 알아두자.

{"age":1, "username":-1} 과 {"age":-1, "username":1}은 동일한 쿼리를 충족한다.

또한 앞서 설명했듯이 인덱스 방향은 다중 조건에 따라 정렬할때만 문제가 된다. 단일 키로 정렬하면 몽고DB는 인덱스를 쉽게 역순으로 읽을 수 있다.

예를 들어, {"age":-1}로 정렬해야 하는데 {"age":1}로 인덱스를 가질 때, 몽고DB는 {"age": -1}로 인덱스를 가질 때 처럼 정렬을 최적화 할 수 있다. 그러니 둘다 생성하지 말자. 방향은 다중키로 정렬 할때만 문제가 된다.

0개의 댓글