8GBのLinuxマシンでmongodbを実行しています。現在、テストモードになっているため、他のリクエストがあったとしてもごくわずかです。
100万件のドキュメントが含まれるコレクションアイテムがあります。フィールドにインデックスを作成しています:PeerGroupとCategoryIds(マルチキーで生成される3〜6個の要素の配列)db.items.ensureIndex({PeerGroup:1, CategoryIds:1}
:。
クエリを実行しているとき
db.items.find({"CategoryIds" : new BinData(3,"xqScEqwPiEOjQg7tzs6PHA=="), "PeerGroup" : "anonymous"}).explain()
次の結果が得られました。
{
"cursor" : "BtreeCursor PeerGroup_1_CategoryIds_1",
"isMultiKey" : true,
"n" : 203944,
"nscannedObjects" : 203944,
"nscanned" : 203944,
"nscannedObjectsAllPlans" : 203944,
"nscannedAllPlans" : 203944,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 680,
"indexBounds" : {
"PeerGroup" : [
[
"anonymous",
"anonymous"
]
],
"CategoryIds" : [
[
BinData(3,"BXzpwVQozECLaPkJy26t6Q=="),
BinData(3,"BXzpwVQozECLaPkJy26t6Q==")
]
]
},
"server" : "db02:27017"
}
680msはそれほど速くないと思います。それともこれは受け入れられますか?また、なぜ「indexOnly:false」と表示されるのですか?