복합 인덱스
개요
복합 인덱스는 컬렉션 문서 내의 여러 필드에 대한 참조를 보유하여 쿼리 및 정렬 성능을 향상시킵니다.mongoc_collection_create_indexes_with_opts()
함수를 사용하여 복합 인덱스를 생성합니다.
복합 인덱스 를 생성할 때는 다음 구성 요소를 지정해야 합니다.
인덱스 할 필드입니다.
각 필드 의 정렬 순서(오름차순 또는 내림차순)입니다. 오름차순으로 정렬하려면
BCON_INT32 (1)
을 지정하고 내림차순으로 정렬하려면BCON_INT32 (-1)
을 지정합니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_mflix
데이터베이스 에 있는 movies
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 Atlas 시작하기 가이드 를 참조하세요.
복합 색인 만들기
다음 예시 에서는 type
및 genres
필드에 복합 인덱스 를 생성하며, 두 필드 모두 오름차순으로 인덱싱됩니다.
bson_error_t error; bson_t *keys = BCON_NEW ("type", BCON_INT32 (1), "genres", BCON_INT32 (1)); mongoc_index_model_t *index_model = mongoc_index_model_new (keys, NULL); if (mongoc_collection_create_indexes_with_opts (collection, &index_model, 1, NULL, NULL, &error)) { printf ("Successfully created index\n"); } else { fprintf (stderr, "Failed to create index: %s", error.message); } bson_destroy (keys); mongoc_index_model_destroy (index_model);
다음 예시 에서는 이전 코드 샘플 에서 생성된 인덱스 를 사용하는 쿼리 를 수행합니다.
const bson_t *doc; bson_t *filter = BCON_NEW ("type", BCON_UTF8 ("movie"), "genres", BCON_UTF8 ("Drama")); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, NULL, NULL); while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } mongoc_cursor_destroy (results); bson_destroy (filter);
{ "_id" : ..., "genres" : [ "Crime", "Drama" ], "title" : "Traffic in Souls", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama" ], "title" : "Laugh, Clown, Laugh", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance" ], "title" : "A Woman of Paris: A Drama of Fate", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance", "Thriller" ], "title" : "He Who Gets Slapped", "type" : "movie", ... } { "_id" : ..., "genres" : [ "Drama", "Romance" ], "title" : "Wild Oranges", "type" : "movie", ... } ...
추가 정보
복합 인덱스에 학습 보려면 MongoDB Server 매뉴얼의 복합 인덱스 를 참조하세요.
복합 인덱스를 사용한 효과적인 인덱싱 전략에 학습 보려면 MongoDB Server 매뉴얼 의 ESR 규칙 을 참조하세요.
API 문서
이 가이드에서 설명하는 메서드에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.