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