创建索引需要很长时间

why*_*ous 15 mongodb

我在MongoDB中创建了一个由11446615个文档组成的集合.

每个文件都有以下形式:

{ 
 "_id" : ObjectId("4e03dec7c3c365f574820835"), 
 "httpReferer" : "http://www.somewebsite.pl/art.php?id=13321&b=1", 
 "words" : ["SEX", "DRUGS", "ROCKNROLL", "WHATEVER"],     
 "howMany" : 3 
}
Run Code Online (Sandbox Code Playgroud)

httpReferer:只是一个网址

单词:从上面的url解析的单词.列表的大小在15到90之间.

我打算使用这个数据库来获取具有类似内容的网页列表.

我将使用单词字段查询此集合,以便在此字段上创建(或者更确切地说,开始创建)索引:

db.my_coll.ensureIndex({words: 1})
Run Code Online (Sandbox Code Playgroud)

我开始创建索引大约3个小时前,它似乎不能再在3小时内完成.

如何提高索引速度?或者也许我应该完全使用另一种方法解决这个问题?欢迎任何想法:)

And*_*ndz 18

不,大型收藏的索引速度很慢.您也可以在后台创建索引:

db.my_coll.ensureIndex({words:1}, {background:true});

在后台创建索引会更慢并导致索引更大.但是,在索引完成之前不会使用它,因此在此期间您将能够正常使用数据库并且索引不会阻塞.

  • 在插入之前创建索引会更慢.如果您可以等到创建索引直到导入数据之后,它会更高效,更快. (6认同)
  • 很好奇-为什么在后台创建索引会导致更大的索引? (2认同)