【发布时间】:2014-08-21 16:34:07
【问题描述】:
嘿,我想评估索引交集的性能,但我无法获得两个索引之间的交集。 我已经在本手册中将一些虚拟记录插入到我的数据库中。 http://docs.mongodb.org/manual/core/index-intersection/
插入代码:
for(var i=0;i<1000;i++){
for(var j=0;j<100;j++){
db.t.insert({item:"abc"+i,qty:j})
}
}
指数:
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "db.t"
},
{
"v" : 1,
"key" : {
"qty" : 1
},
"name" : "qty_1",
"ns" : "db.t"
},
{
"v" : 1,
"key" : {
"item" : 1
},
"name" : "item_1",
"ns" : "db.t"
}
]
查询:
db.t.find({item:"abc123",qty:{$gt:15}}).explain()
解释结果:
{
"cursor" : "BtreeCursor item_1",
"isMultiKey" : false,
"n" : 84,
"nscannedObjects" : 100,
"nscanned" : 100,
"nscannedObjectsAllPlans" : 201,
"nscannedAllPlans" : 305,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 2,
"nChunkSkips" : 0,
"millis" : 1,
"indexBounds" : {
"item" : [
[
"abc123",
"abc123"
]
]
},
"server" : "brews18:27017",
"filterSet" : false
}
我的问题是为什么 mongo 只使用 item 作为索引而不使用交集。
提前致谢
【问题讨论】:
-
你能解释一下吗(真)?我怀疑这是因为 MongoDB 实际上感觉到加载 100 个文档然后过滤掉 16 个比加载一个全新的索引然后与之相交要快
标签: mongodb indexing mongodb-query