0

以下のように、フィールド_idとCreationTimestamp.Oに基づいてクエリを実行するコレクションがある場合:

var _query = Query.And(
 Query.EQ("_id", "TheId"),
    Query.GT("CreationTimestamp.0", DateTimeOffset.UtcNow.AddMinutes(-15).UtcTicks));

これらの両方のフィールドに複合インデックスを作成する必要がありますか?_idにはデフォルトでインデックスがあることを私は知っています。

ベストプラクティスに関するガイダンスを探しています。つまり、両方のフィールドに複合インデックスを作成するか、CreationTimestamp.Oのインデックスを作成します。これらはすでに_idのインデックスになっているためです。

4

1 に答える 1

3

ここで複合インデックスを作成することにはあまりメリットはありません。フィールドで自動作成されたインデックスの選択性_idは1(一意のインデックス)であるため、接頭辞として複合インデックスを付ける理由はありません。考えられる唯一の利点は、MongoDBがこのクエリにカバーされたインデックスを使用でき、場合によっては処理を高速化できることです(これを証明するには、データのベンチマークを行う必要があります)。

于 2012-05-29T14:23:15.337 に答える