MongoDB索引限制


在本章中,我們將了解索引限制及其它元件。

索引額外開銷

每個索引佔用一些空間,並導致每次插入,更新和刪除的開銷。因此,如果很少使用集合進行讀取操作(大部分是插入或更新操作),則建議不要使用索引。

RAM/記憶體的使用

由於索引儲存在RAM中,因此應確保索引的總大小不超過RAM限制。 如果總大小超過了系統記憶體的大小,MongoDB將開始刪除一些索引,從而導致效能下降。

查詢限制

索引不能在使用的查詢中使用 -

  • 正規表示式或否定運算子,如$nin$not
  • 算術運算子,如$mod
  • $where子句

因此,建議經常檢查查詢的索引使用情況。

索引鍵限制

MongoDB 2.6版本開始,如果現有索引欄位的值超過索引鍵限制,MongoDB將不會建立索引。

插入超過索引鍵限制的文件

如果本文件的索引欄位值超過索引鍵限制,MongoDB將不會將任何文件插入索引集合。 mongorestoremongoimport工具也是如此。

索引最大範圍

  • 集合不能有超過64個索引。
  • 索引名稱的長度不能超過125個字元。
  • 複合索引最多可以編號31個欄位。