0
나는 다음 컬렉션 샘플이 있습니다몽고에 geoIndex 성능을 향상
{
"cursor" : "S2NearCursor",
"isMultiKey" : false,
"n" : 10000,
"nscannedObjects" : 48846,
"nscanned" : 48846,
"nscannedObjectsAllPlans" : 48846,
"nscannedAllPlans" : 48846,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 95,
"indexBounds" : {
},
"filterSet" : false
}
: 스키마 성능 결과는 다음 중 하나입니다
db.test.find({"locatedAt":{"$near":{"$geometry":{"type":"Point","coordinates":[2.240413,41.582159]}}}}).explain();
을 평가하기 위해 내가 10.000 행을 삽입
var testSchema = new Schema({
title: {type: String, required: true},
owner: {type:Schema.Types.ObjectId},
locatedAt: {type: {}, index: '2dsphere', sparse: true, "2dsphereIndexVersion": 2, required: true}
});
을
같은 결과로 "2d"색인을 만들려고했습니다.
내 의견으로 요약하면 쿼리가 너무 많은 행을 스캔하고 있습니다. 내가 잘못하고있는 것은 무엇입니까? 스키마 정의일까요?
감사합니다.
에 가면
의 nscanned * 수는 문서가 없습니다 . 그것들은 지리 정보 색인에 내부적으로 중요한 정보를 나타냅니다. 중요하지는 않습니다. 중요한 것은 여전히 작업량에 비례하므로 지리적 쿼리를 비교하는 데 사용할 수 있다는 것입니다. 보고 된 시간은 모든 10000 워드 프로세서를 얻으려면 95ms입니다. 따라서 쿼리가 잘 수행됩니다 (참고 : 실제로 타이밍 정보를 설명 할 때 밀리 필드를 실제로 사용하지 마십시오). – wdberkeley
의견을 보내 주셔서 감사합니다. 나는 오늘 ('설명'필드의 의미를 배우는) 정보를 평가하고 제한이나 제약 조건을 포함하면 네 스캔 된 데이터가 맞고 밀리 스가 4로 바뀜을 계속했습니다. 발견, 그것은 스키마 정의의 필터에 문제가되지 않았습니다. –