MongoDB,嵌入式文档索引

时间:2016-01-28 21:43:34

标签: performance mongodb

我有一个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

我错过了什么吗?

0 个答案:

没有答案