我从这里学到了很多关于索引和查找内容的知识 。
索引支持在 MongoDB 中高效执行查询。如果没有索引,MongoDB 必须执行集合扫描,即扫描集合中的每个文档,以选择那些与查询语句匹配的文档。如果查询存在合适的索引,MongoDB 可以使用该索引来限制它必须检查的文档数量。
但我还有一些疑问:
如果我错了,请帮助我。谢谢。
Rah*_*mar 10
我认为,您有一个想法,即索引存储在 RAM 中。如果我说他们不是怎么办。
首先我们需要了解什么是索引,索引基本上是一个指针,用于告诉该文档在磁盘上的位置。就像我们在书中有索引一样,为了更快地访问,我们可以看到哪个主题在哪个页码上。
因此,创建索引时,它们也存储在磁盘中,但是当应用程序运行时,基于频繁使用和更快的访问,它们会加载到 RAM 中,但加载和创建之间存在差异。
此外,加载索引与将集合或记录加载到 RAM 中不同。如果我们加载了索引,我们就知道要从磁盘中取出所有文档,这与加载所有文档并验证每个文档不同。所以索引避免了集合扫描。
索引的创建是一个一次性过程,但对文档的每次写入都可能会改变索引,因此某些部分可能需要重新计算,因为记录可能会根据数据的变化进行混洗。这就是索引使写入变慢而读取变快的原因。
再次将其视为一本书,如果您在书之间添加一个新主题,例如 2 页,则需要重新计算该主题编号之后的所有索引。因此。
使用(createIndex)创建索引时,记录是否始终存储在RAM中?。
每次我的应用程序要重新启动时都需要创建索引吗?
在默认 id (_id) 的情况下会发生什么。始终存储在 RAM 中。
_id 是默认索引,这意味着对于特定集合,所有记录始终存储在 RAM 中?