MongoDB 단일 필드 인덱스
MongoDB 단일 필드 인덱스 (Single Field Indexes)
같은 필드를 반복해서 조회하는 쿼리가 있다면 그 필드에 인덱스를 만들어 검색 속도를 높일 수 있어요. MongoDB의 단일 필드 인덱스(single field index)는 컬렉션에서 하나의 필드만 이용해 정렬된 정보를 만들어 두는 인덱스예요. 기본적으로 모든 컬렉션에는 _id 필드에 대한 인덱스가 이미 있지만, 중요한 쿼리를 더 빠르게 만들려면 인덱스를 추가로 만들면 됩니다.
인덱스 만들기
도큐먼트의 어떤 필드에도 인덱스를 만들 수 있어요. 최상위 필드뿐 아니라 내장 필드(embedded field)나 내장 도큐먼트 안의 필드도 대상이 될 수 있죠. 인덱스를 만들 때는 필드와 정렬 순서를 지정하는데, 1은 오름차순, -1은 내림차순이에요.
단일 필드 인덱스를 만들 때는 다음 형태를 사용해요.
db.<collection>.createIndex( { <field>: <sort-order> } )
예를 들어 score 필드에 오름차순 인덱스를 만들면, 컬렉션의 각 도큐먼트가 score 값을 기준으로 오름차순 정렬돼 인덱스에 들어갑니다. 이후 score 필드로 조회하는 쿼리는 이 정렬된 인덱스를 타면서 빠르게 결과를 찾을 수 있어요.
언제 쓰면 좋을까
애플리케이션이 같은 필드에 대한 쿼리를 자주 실행한다면 그 필드에 인덱스를 만드는 게 성능에 좋아요. 예를 들어 인사(HR) 부서가 사원 ID로 직원을 자주 조회한다고 해볼게요. 그러면 사원 ID 필드에 인덱스를 만들어서 그 조회 성능을 끌어올릴 수 있어요.
시작하기
단일 필드 인덱스는 다음처럼 상황에 따라 예시가 나뉘어요.
- 단일 필드에 인덱스 만들기
- 내장 필드에 인덱스 만들기
- 내장 도큐먼트에 인덱스 만들기
MongoDB Atlas에 호스팅된 배포라면 UI에서도 단일 필드 인덱스를 만들고 관리할 수 있어요.