在本章中,我们将了解索引限制及其它组件。
索引额外开销
每个索引占用一些空间,并导致每次插入,更新和删除的开销。因此,如果很少使用集合进行读取操作(大部分是插入或更新操作),则建议不要使用索引。
RAM/内存的使用
由于索引存储在RAM中,因此应确保索引的总大小不超过RAM限制。 如果总大小超过了系统内存的大小,MongoDB将开始删除一些索引,从而导致性能下降。
查询限制
索引不能在使用的查询中使用 -
- 正则表达式或否定运算符,如
$nin,$not等 - 算术运算符,如
$mod等 $where子句
因此,建议经常检查查询的索引使用情况。
索引键限制
从MongoDB 2.6版本开始,如果现有索引字段的值超过索引键限制,MongoDB将不会创建索引。
插入超过索引键限制的文档
如果本文档的索引字段值超过索引键限制,MongoDB将不会将任何文档插入索引集合。 mongorestore和mongoimport工具也是如此。
索引最大范围
- 集合不能有超过
64个索引。 - 索引名称的长度不能超过
125个字符。 - 复合索引最多可以编号
31个字段。
上一篇:
MongoDB高级索引
下一篇:
MongoDB ObjectId
