我有一个mongoDB集合,其中包含超过100万个文档,结构如下:
{ _id:"..",
title:"…",
year:…,
authors :
[{_id:"...", mail: "…"},
{_id: …, Name : "…"}, …]
}
我运行了查询
db.papers.find({"authors._id": /Stonebraker$/}, {_id:1})
有没有关于authors._id的索引
(db.papers.createIndex( { "authors._id": 1 } )).
查询应该返回大约100个文档。
令人惊讶的是,如果没有索引,查询的执行速度会快得多。
在前一个帖子(search time with index > without index)中,给出类似问题的答案是匹配的结果集几乎包含整个集合。但在我的案例中并非如此(100万份文件中有100份)。
没有索引:
query: { authors._id: /Stonebraker$/ }
planSummary: COLLSCAN
cursorid:43101148517
ntoreturn:0
ntoskip:0
nscanned:0
nscannedObjects:1109672
keyUpdates:0
writeConflicts:0
numYields:14218
nreturned:101
reslen:3905
locks:{}
time: 12686ms
使用索引:
query: { authors._id: /Stonebraker$/ }
planSummary: IXSCAN { authors._id: 1.0 }
cursorid:47336451823
ntoreturn:0
ntoskip:0
nscanned:2576899
nscannedObjects:1394747
keyUpdates:0
writeConflicts:0
numYields:213058
nreturned:101
reslen:3959
locks:{}
time: 1743651ms
我错过了什么吗?