이번 글에서는 MongoDB에서 데이터 검색 성능을 최대한 높이기 위한 방법을 소개한다. 이 방법의 핵심은 '인덱스'와 '컴파운드 인덱스'라는 두 개념을 이해하고 활용하는 것이다.
1. 인덱스
인덱스는 MongoDB에서 데이터를 효율적으로 찾기 위한 데이터 구조다. 인덱스가 없을 경우, MongoDB는 쿼리에 맞는 문서를 찾기 위해 컬렉션의 모든 문서를 검색해야 한다. 하지만 인덱스가 있을 경우, MongoDB는 인덱스를 활용하여 필요한 문서를 더 빠르게 찾을 수 있다. 예를 들어, MongoDB에서 'username'이라는 필드에 인덱스를 추가하는 방법은 다음과 같다.
db.users.createIndex({ username: 1 });
2. 컴파운드 인덱스
컴파운드 인덱스는 두 개 이상의 필드를 결합한 인덱스를 말한다. 이 인덱스는 필드의 순서에 따라 정렬되며, 이 순서는 쿼리 성능에 큰 영향을 미친다. 예를 들어, MongoDB에서 'username' 필드와 'email' 필드에 컴파운드 인덱스를 추가하는 방법은 다음과 같다.
db.users.createIndex({ username: 1, email: 1 });
3. 인덱스와 컴파운드 인덱스의 차이점 및 사용 시기
인덱스와 컴파운드 인덱스의 차이점을 이해했으니, 각각 언제 사용해야 하는지를 알아볼 필요가 있다. 인덱스는 단일 필드에 대한 빠른 조회를 가능하게 해주며, 컴파운드 인덱스는 여러 필드를 결합하여 빠른 조회를 가능하게 해준다. 따라서, 단일 필드를 자주 쿼리하는 경우에는 인덱스를, 여러 필드를 동시에 쿼리하는 경우에는 컴파운드 인덱스를 사용하는 것이 좋다. 그러나 인덱스 생성 및 유지에도 비용이 발생하므로, 필요한 만큼만 인덱스를 생성하고 유지하는 것이 중요하다. 인덱스가 검색 성능을 향상시키지만, 과도하게 생성하면 오히려 성능 저하를 일으킬 수 있다.
이를 통해 MongoDB의 검색 성능을 극대화하는 방법을 이해하였다. 적절한 인덱스와 컴파운드 인덱스의 활용을 통해 MongoDB에서 데이터를 더 효율적으로 검색할 수 있다는 것을 기억하자.
'DataBase > MongoDB' 카테고리의 다른 글
[Mongodb] explain을 활용한 mongodb 쿼리 최적화 (0) | 2023.08.02 |
---|---|
[MongoDB] mongodb에서 필드의 이름을 변경하는 방법 (0) | 2023.03.17 |
[Mongoose] mongoose를 사용한 mongodb 필드를 삭제하는 방법 (0) | 2022.12.08 |
[MongoDB] The value of "offset" is out of range. It must be >= 0 && <= 17825792 (0) | 2022.11.14 |
[Error] MongoServerError: ns not found (0) | 2022.11.08 |