カーディナリティの低いフィールドにインデックスを配置しても意味がないことを 読みました。これは、複合インデックス自体に当てはまりますか?
db.perms.createIndex({"owner": 1, "object_type": 1, "target": 1});
クエリを使用すると、次のようになります。
db.perms.find({"owner": "me", "object_type": "square"});
db.perms.find({"owner": "me", "object_type": "circle", "target": "you"});
distinctobject_type
の数は時間の経過とともに増加します (おそらく最大 10 または 20 を超えない) が、最初は約 2 または 3 から始まります。
同様に、ハッシュ インデックスを調べる価値はありますか?
更新:
owner
そしてtarget
大きく成長するでしょう。これは、 (つまりファイル)owner
を「所有」するファイル システムのようなものと考えてください。target
ただし、UNIX システムと同様に、ファイルはフォルダー、シンボリック リンク、または通常のファイル (したがって、タイプ) である可能性があります。したがって、 は 3 つしかありませんがobject_type
、owner
とのtarget
組み合わせは、タイプが均等に分散された数千のエントリを持つことができます。