2014-12-04 5 views
2

MongoDB에 대한 몇 가지 질문이 있습니다.MongoDB 색인 생성 및 투영

(1) 색인 생성이 투영에 도움이됩니까?

(2) 모음을 여러 개의 색인에 할당하고 정렬을 사용하여 찾기를 실행 한 다음 explain을 사용하면 정렬 된 필드에 BtreeCursor 색인이 표시됩니다.

쿼리 부분에서 다른 인덱스가 도움이 되었습니까? explain은 찾기에 도움이되는 마지막 인덱스 만 표시하기 때문에 표시하지 않았습니까?

explain에는 쿼리, 정렬 등을 돕는 모든 색인이 표시되어야합니까?

감사합니다.

답변

6

색인 생성이 영사에 도움이됩니까?

나는 그것이 정말 도움 (성능 등으로 정의) 유일한 시간 쿼리가 "포함"되어있는 경우입니다 믿습니다 http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/

그래서 예를 들어, 당신은 {d:1, e:2}에 질의하고 다시 {_id, t, e}를 얻기 위해 원하는 경우 , 당신은 할 것 :

db.t.ensureIndex({d:1 , e:1, _id:1, t:1}); 
db.t.find({d:1, e:2}, {_id:1, t:1, e:1}); 

그리고 그 쿼리의 explain() 출력은 응답을 반환하기 위해 디스크에서 문서를로드 결코 indexOnly로 진정한 의미를 보여 것입니다.

그래, 색인은 특정 상황에서 영사에 도움이 될 수 있습니다.

모음을 여러 색인에 할당하고 정렬을 사용하여 찾기를 실행 한 다음 설명을 사용하여 정렬 된 필드에 BtreeCursor 색인을 표시합니다.

예.

다른 색인이 검색어 부분에서 도움이되었거나 찾을 수있는 마지막 색인 만 표시했기 때문에 설명하지 못했을 수 있습니까?

색인 교차의 피해자 인 경우 사용 된 모든 색인 계획을 표시하려면 explain(true)을 사용하십시오.

교차 색인을 사용하여 찾기 및 정렬에 별도의 색인이 사용되지 않으므로 여기에 대한 대답은 실제로는 없습니다. http://docs.mongodb.org/manual/core/index-intersection/#index-intersection-and-sort