Mongodb 简明教程

MongoDB - Indexing Limitations

在本章中,我们将了解索引限制及其其他组件。

Extra Overhead

每个索引都会占用一些空间,并导致每个插入、更新和删除操作产生开销。因此,如果你很少将你的集合用于读取操作,那么不使用索引是有道理的。

RAM Usage

由于索引存储在 RAM 中,因此你应该确保索引的总大小不超过 RAM 限制。如果总大小增加到超过 RAM 大小,它将开始删除某些索引,导致性能下降。

Query Limitations

索引无法用于使用以下内容的查询中 −

  1. 诸如 $nin、$not 等正则表达式或否定操作符

  2. 诸如 $mod 等算术操作符

  3. $where clause

因此,建议始终检查查询的索引用法。

Index Key Limits

从 2.6 版本开始,如果现有索引字段的值超过索引键限制,MongoDB 将不会创建索引。

Inserting Documents Exceeding Index Key Limit

如果文档的索引字段值超过索引键限制,MongoDB 将不会插入任何文档到索引集合中。对于 mongorestore 和 mongoimport 实用程序也有同样的情况。

Maximum Ranges

  1. 一个集合不能有多于 64 个索引。

  2. 索引名称的长度不能超过 125 个字符。

  3. 复合索引最多可以索引 31 个字段。