MongoDB 복합 인덱스
MongoDB 복합 인덱스 (Compound Indexes)
한 필드로는 조회 조건을 다 못 담고, 여러 필드를 함께 조건으로 쓰는 쿼리가 있다면 복합 인덱스(compound index)가 도움이 돼요. 복합 인덱스는 컬렉션의 각 도큐먼트에서 여러 필드 값을 모아 정렬해 두는 인덱스예요. 인덱스의 첫 번째 필드나 그 앞쪽(prefix) 필드들로 조회할 수 있고, 필드의 순서가 결과에 큰 영향을 줍니다.
인덱스 만들기
복합 인덱스는 여러 필드를 정렬 순서와 함께 나열해 만들어요.
db.<collection>.createIndex( {
<field1>: <sortOrder>,
<field2>: <sortOrder>,
...
<fieldN>: <sortOrder>
} )
각 필드의 정렬 순서는 1(오름차순)이나 -1(내림차순)으로 지정해요. 여기서 주의할 점은 필드의 나열 순서가 매우 중요하다는 거예요. 복합 인덱스는 첫 번째 필드부터 순서대로 정렬 기준을 잡기 때문에, 어떤 필드를 앞에 두느냐에 따라 이 인덱스가 어떤 쿼리를 쓸 수 있는지가 달라집니다.
예를 들어 { userid: 1, score: -1 } 형태의 복합 인덱스를 만들었다면, userid로만 조회하는 쿼리도 이 인덱스를 쓸 수 있어요. 하지만 score만 단독으로 조회하는 쿼리는 이 인덱스의 앞쪽 필드가 userid라서 인덱스 효과를 온전히 받지 못할 수 있어요.
MongoDB Atlas에 호스팅된 배포라면 UI에서 복합 인덱스를 만들고 관리할 수 있어요.
시작하기
복합 인덱스를 실제로 만드는 방법은 복합 인덱스 만들기 문서에서 단계별로 확인할 수 있어요.