2016-07-27 65 views

回答

1

在集合上创建新索引就像创建一个按B树排列的新集合,这样您就可以快速在关键字段上执行搜索。这看起来像复制部分集合。

因此,删除索引,它会喜欢删除一个集合,mongo只是删除索引集合,然后它完成。

我不知道你是否知道文件系统是如何工作的,但是你可以用同样的方式考虑这个问题。当你将文件复制到磁盘时,这需要时间。但是,如果您从磁盘中删除文件,则需要很少的时间,因为文件系统只是将其标记为未使用,几乎不需要任何时间。

+0

这意味着如果我创建更多的索引,它会创建更多的'索引集合到磁盘或persisent其他,随着数据的增加,插入数据将需要更多的索引集合的关系,所以插入数据将是慢? – cow

+0

是的,但并不明显,B-Tree将花费n(log(n))时间来查找项目,并且还需要n(log(n))时间来更新项目,所以插入数据将会“慢”,但您不会感觉它,除非你在短时间内写入大量数据。您还可以在创建索引时使用“背景”选项,因此在插入/更新数据时不需要等待索引更新。而且你应该知道mongodb在更新后并不总是将数据写入磁盘,它总是写入内存并在发生某些特殊事件时持久化它们。 –