복합 색인 만들기
복합 인덱스 는 여러 필드에 대한 참조를 포함하는 인덱스입니다. 복합 인덱스는 인덱스의 필드 또는 인덱스 접두사의 필드에 대한 쿼리 성능을 향상시킵니다.
복합 인덱스를 만들려면 db.collection.createIndex()
메서드를 사용합니다.
db.<collection>.createIndex( { <field1>: <sortOrder>, <field2>: <sortOrder>, ... <fieldN>: <sortOrder> } )
제한
단일 복합 인덱스에 최대 32개의 필드를 지정할 수 있습니다.
시작하기 전에
이러한 문서가 포함된 students
컬렉션을 만듭니다.
db.students.insertMany([ { "name": "Alice", "gpa": 3.6, "location": { city: "Sacramento", state: "California" } }, { "name": "Bob", "gpa": 3.2, "location": { city: "Albany", state: "New York" } } ])
절차
다음 작업은 name
및 gpa
필드를 포함하는 복합 인덱스를 생성합니다.
db.students.createIndex( { name: 1, gpa: -1 } )
이 예시에서는
name
인덱스는 오름차순(1
)입니다.gpa
의 인덱스는 내림차순(-1
)입니다.
결과
생성된 인덱스는 다음을 선택하는 쿼리를 지원합니다.
name
및gpa
필드 모두입니다.name
은 복합 인덱스의 접두사이므로name
필드만 해당됩니다.
예를 들어 인덱스는 다음 쿼리를 지원합니다.
db.students.find( { name: "Alice", gpa: 3.6 } ) db.students.find( { name: "Bob" } )
gpa
는 인덱스 접두사의 일부가 아니므로 인덱스는 gpa
필드에 대한 쿼리만 지원하지 않습니다. 예를 들어 인덱스는 이 쿼리를 지원하지 않습니다.
db.students.find( { gpa: { $gt: 3.5 } } )
자세히 알아보기
효율적인 복합 인덱스를 만드는 방법을 학습 ESR(동등성, 정렬, 범위) 가이드라인을 참조하세요.
정렬 순서(오름차순 또는 내림차순)가 복합 인덱스의 성능에 미치는 영향을 알아보려면 인덱스를 사용하여 쿼리 결과 정렬을 참조하세요.
다른 인덱스 유형에 대해 알아보려면 인덱스 유형을 참조하세요.
인덱스에 지정할 수 있는 속성을 알아보려면 인덱스 속성을 참조하세요.