MongoDB インデックスの制限
追加オーバーヘッド
各インデックスは一定のストレージ領域を占有し、挿入、更新、削除操作の際にもインデックスを操作する必要があります。したがって、コレクションに対して読み取り操作をほとんど行わない場合は、インデックスを使用しないことをお勧めします。
メモリ(RAM)使用量
インデックスはメモリ(RAM)に保存されるため、インデックスのサイズがメモリの制限を超えないようにしてください。
インデックスのサイズがメモリの制限より大きい場合、MongoDBは一部のインデックスを削除し、これによりパフォーマンスが低下します。
クエリの制限
インデックスは次のクエリでは使用できません:
- 正規表現および非演算子($nin, $not など)。
- 算術演算子($mod など)。
- $where 句
したがって、自分のステートメントがインデックスを使用しているかどうかを確認することは良い習慣です。explainを使用して確認できます。
インデックスキーの制限
バージョン2.6以降、既存のインデックスフィールドの値がインデックスキーの制限を超える場合、MongoDBはインデックスを作成しません。
インデックスキーの制限を超えるドキュメントの挿入
ドキュメントのインデックスフィールドの値がインデックスキーの制限を超える場合、MongoDBはどのドキュメントもインデックス付きコレクションに変換しません。mongorestore や mongoimport ツールと同様です。
最大範囲
- コレクション内のインデックスは64個を超えることはできません
- インデックス名の長さは128文字を超えることはできません
- 複合インデックスは最大31フィールドまで持つことができます