2014-09-28 2 views
0

다음과 같은 시나리오를 생각해보십시오.MongoDB의 화합물 지수와 단일 인덱스 성능

90 % 쿼리는 다음과 같습니다

{a:"somevalue"} 

와 10 %가

{a:"somevalue",b:"somevalue"} 

은 무엇 단지 복합 인덱스 (있는 경우)와이를 만족하는 단점 될 것입니다? 그래서 같은 :

{ 
    "v" : 1, 
    "key" : { 
      "a" : 1, 
      "b" : 1 
    }, 
    "name" : "a_1_b_1", 
    "ns" : "foo.bar" 

}

아니면 내가이 말을했다

{ 
    "v" : 1, 
    "key" : { 
      "a" : 1, 
      "b" : 1 
    }, 
    "name" : "a_1_b_1", 
    "ns" : "foo.bar" 
}, 
{ 
    "v" : 1, 
    "key" : { 
      "a" : 1 
    }, 
    "name" : "a_1", 
    "ns" : "foo.bar" 
} 

답변

2

The manual에만 쿼리를 만족하는 두 번째 인덱스를 추가하는 혜택을 누릴 것입니다;

{a : 1, b : 1}의 복합 색인뿐만 아니라 해당 색인의 접두어로 구성된 색인, 즉 {a : 1}이없는 모음 인덱스의 희소 또는 고유 제한 조건이있는 경우 {a : 1} 인덱스를 삭제할 수 있습니다.

MongoDB는 {a : 1} 색인을 사용한 모든 상황에서 복합 색인을 사용할 수 있습니다. 즉

, 당신은 가장 가능성 MongoDB를 가지고 있지 않기 때문에 모든 삽입에 두 개의 별도의 인덱스를 메모리에 두 개의 인덱스를 캐시하거나 업데이트, 단일 인덱스를 사용하여 좋은 또는 더 나은 성능을 얻을 수 있습니다.

+1

완벽한, 감사합니다. –