개요
이 가이드 에서는 코틀린 동기 (Kotlin Sync) 운전자 에서 인덱스 를 사용하는 방법을 학습 수 있습니다. 인덱스는 쿼리의 효율성 을 높이고 문서 쿼리 및 저장에 기능을 추가할 수 있습니다.
인덱스가 없으면 MongoDB는 컬렉션의 모든 문서를 스캔하여 각 쿼리와 일치하는 문서를 찾아야 합니다. 이러한 컬렉션 스캔은 속도가 느리고 애플리케이션 성능에 부정적인 영향을 미칠 수 있습니다. 그러나 쿼리에 적합한 인덱스가 있는 경우 MongoDB는 인덱스를 사용하여 검사해야 하는 문서를 제한할 수 있습니다.
인덱스 에서 직접 결과를 반환하기 위해 쿼리 충족해야 하는 기준에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 대상 쿼리 섹션을 참조하세요.
운영 고려 사항
쿼리 성능을 향상시키려면 애플리케이션의 쿼리와 정렬된 결과를 반환하는 작업에 자주 나타나는 필드에 인덱스를 빌드합니다. 추가하는 각 인덱스는 활성화되면 디스크 공간과 메모리를 사용하므로 용량 계획을 위해 인덱스 메모리와 디스크 사용량을 추적해야 할 수 있습니다. 또한 쓰기 (write) 작업이 인덱싱된 필드를 업데이트할 때는 MongoDB도 관련 인덱스를 업데이트해야 합니다.
MongoDB 동적 스키마를 지원하므로 애플리케이션은 이름을 미리 알 수 없거나 임의적인 필드에 대해 쿼리 할 수 있습니다. 와일드카드 인덱스 는 이러한 쿼리를 지원 도움이 되지만 워크로드 기반 인덱스 계획을 대체하도록 설계되지 않았습니다.
데이터 모델 을 설계하고 애플리케이션 에 적합한 인덱스를 선택하는 방법에 대한 자세한 내용은 인덱싱 전략 및 데이터 모델링 및 인덱스에 대한 서버 설명서를 참조하세요.
인덱스 유형
MongoDB 데이터 쿼리를 지원 위해 여러 가지 인덱스 유형을 제공합니다. 컬렉션 에서 createIndex()
메서드를 호출하고 인덱스 정의를 인수로 전달하여 인덱스 만들 수 있습니다.
다음 섹션에서는 가장 일반적인 인덱스 유형을 설명하고 각 인덱스 유형을 생성하기 위한 샘플 코드를 제공합니다.
참고
이 페이지의 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix.movies
및 sample_mflix.theaters
컬렉션을 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 코틀린 동기 (Kotlin Sync) 드라이버 시작하기를 참조하세요.
다양한 인덱스 유형에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 인덱스 유형 을 참조하세요.
단일 필드 인덱스
다음 예시 에서는 지정된 필드 에 오름차순 인덱스 를 생성합니다.
collection.createIndex(Indexes.ascending("<field name>"))
단일 필드 인덱스에 학습 보려면 MongoDB Server 매뉴얼의 단일 필드 인덱스 필드 참조하세요.
복합 인덱스
다음 예시 에서는 지정된 필드에 복합 인덱스 를 생성합니다.
collection.createIndex(Indexes.ascending("<field name 1>", "<field name 2>"))
복합 인덱스에 학습 보려면 MongoDB Server 매뉴얼의 복합 인덱스 를 참조하세요.
Multikey Index
다음 예시 에서는 지정된 배열 값 필드 에 멀티키 인덱스 를 생성합니다.
collection.createIndex(Indexes.ascending("<array field name>"))
멀티키 인덱스에 대해 자세히 학습 MongoDB Server 매뉴얼의 멀티키 인덱스를 참조하세요.
클러스터된 인덱스
다음 예시 에서는 _id
필드 에 클러스터형 인덱스 를 사용하여 새 컬렉션 을 만듭니다.
val clusteredIndexOptions = ClusteredIndexOptions( Indexes.ascending("_id"), true ) val collection = database.createCollection("<collection name>", clusteredIndexOptions)
클러스터형 컬렉션 및 인덱스에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 클러스터형 컬렉션 을 참조하세요.
Text Index
다음 예시 에서는 지정된 string 필드 에 텍스트 인덱스 를 생성합니다.
collection.createIndex(Indexes.text("<field name>"))
지리 공간적 인덱스
다음 예시 에서는 GeoJSON 객체를 포함하는 지정된 필드 에 2dsphere
인덱스 를 생성합니다.
collection.createIndex(Indexes.geo2dsphere("<GeoJSON object field>"))
지리 공간적 인덱스에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 지리 공간적 인덱스 를 참조하세요.
고유 인덱스
다음 예시 에서는 지정된 필드 에 고유 인덱스 를 생성합니다.
val indexOptions = IndexOptions().unique(true) collection.createIndex(Indexes.ascending("<field name>"), indexOptions)
고유 인덱스에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 고유 인덱스 를 참조하세요.
와일드카드 인덱스
다음 예시 에서는 지정된 컬렉션 에 와일드카드 인덱스 를 생성합니다.
collection.createIndex(Indexes.ascending("$**"))
와일드카드 인덱스에 대해 자세히 학습하려면 MongoDB Server 매뉴얼에서 와일드카드 인덱스 를 참조하세요.
인덱스 삭제
다음 예시 와 같이 컬렉션 dropIndex()
메서드를 사용하여 인덱스를 삭제 수 있습니다.
collection.dropIndex("<index name>")