クエリを調べようとしていますが、インデックス付きフィールド「purchaseState」から直接クエリを実行すると、「nscannedObjectsAllPlans」と「nscannedAllPlans」が何をしているのかわかりません。
「 nscannedObjects」、「nscanned」、「nscannedObjectsAllPlans」、および「nscannedAllPlans」のスキャンされたアイテムと同じ結果が得られます
ただし、400を超える価格をクエリに追加すると、 nscannedObjectsAllPlansはnscannedObjectsよりも大きくなります。nscannedObjectsAllPlansが、purchase_stateインデックスとpurchase_state_Idインデックスを使用してプランを実行するスキャンオブジェクトの総数である かどうかを知りたい ですか?それとも、2つのインデックスプランの結果のうち大きい方を示しているだけですか?
購入状態にインデックスを追加してから、購入状態とIDにインデックスを追加しました
db.toys.ensureIndex({"purchaseState":1})
db.toys.ensureIndex({"purchaseState":1、 "_id":1})
**db.toys.find({"purchaseState" : "NY"}).pretty().explain()**
"cursor" : "BtreeCursor purchaseState_1",
"isMultiKey" : false,
"n" : 1596,
"nscannedObjects" : 1596,
"nscanned" : 1596,
"nscannedObjectsAllPlans" : 1596,
"nscannedAllPlans" : 1596,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 3,
"indexBounds" : {
"purchaseState" : [
[
"NY",
"NY"
]
]
},
"server" : "XXXXXXX:27017"
**db.toys.find({"purchaseState" : "NY", "price": { $gt : 400 }}).pretty().explain()**
"cursor" : "BtreeCursor purchaseState_1",
"isMultiKey" : false,
"n" : 1423,
"nscannedObjects" : 1596,
"nscanned" : 1596,
"nscannedObjectsAllPlans" : 1808,
"nscannedAllPlans" : 1808,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 10,
"indexBounds" : {
"purchaseState" : [
[
"NY",
"NY"
]
]
},
"server" : "XXXXXXX:27017"