는 무엇 덮인 수집에 역 삽입 순서로 정렬하는 가장 빠른 방법이다하는 것은 '자연'의 사용을 우회 인덱싱 된 ('rf') 필드는 쿼리 속도를 크게 떨어 뜨립니다. 예상 된 동작입니까? 찾기/색인 후에 '자연'정렬을 계산해서는 안됩니까? '자연'일종의없이MongoDB를 색인 및 자연 정렬 최적화
:
db.log.find({ rf : 'o-5556457634'}).explain();
{
"cursor" : "BtreeCursor rf_1",
"nscanned" : 4,
"nscannedObjects" : 4,
"n" : 4,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"rf" : [
[
"o-5556457634",
"o-5556457634"
]
]
}
힌트는 'RF'인덱스를 사용하는 엔진을 강제로 수행하지만 결과는 우회 (역) 종류
db.log.find({ rf : 'o-5556457634'}).sort({ '$natural' : -1 }).hint({rf :1}).explain();
{
"cursor" : "BtreeCursor rf_1",
"nscanned" : 4,
"nscannedObjects" : 4,
"n" : 4,
"scanAndOrder" : true,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"rf" : [
[
"o-5556457634",
"o-5556457634"
]
]
}
}
그냥 힌트 - 설명과 함께 질문을 업데이 트했습니다. 엔진이 'rf'인덱스를 사용하도록 강제하지만 결과가 (역) '자연'정렬을 우회합니다. – user1345178
정렬 전에 이동을 시도 했습니까? –
예, 결과가 동일합니다 (역 자연 정렬은 무시 됨). 이상적으로 나는 '찾기'쿼리가 동적이기 때문에 쿼리를 가능한 간단하고 직관적으로 유지하는 '힌트'를 피하고 싶습니다. '자연적인'정렬로 인덱스 사용을 창 밖으로 던질 것으로 예상되는지 이해하려고 시도합니다. – user1345178