5

私は写真集を持っています。それらは、他のコレクション (イベント、ニュース、投稿など) から (1 対多で) 参照できます。

次のような参照を作成できます。

db.photos.insert({ parent:{ collection: 'events', id: 12345 }})
db.photos.insert({ parent:{ collection: 'events', id: 54321 }})
//or just DBRef
db.photos.ensureIndex({parent:1})

また

db.photos.insert({ post_id: 12345 })
db.photos.insert({ event_id: 54321 })

db.photos.ensureIndex({post_id:1}, {sparse: true})
db.photos.ensureIndex({event_id:1}, {sparse: true})

最初のケースでは、1 つの大きな複合インデックスがあります。2 番目のケースでは、いくつかの小さなインデックスがあります。

各アプローチの長所と短所は何ですか?

4

1 に答える 1

0

まず、どのフィールドでのヒット数を確認します。次に、最大ヒット フィールドを持つ 1 つの複合インデックスを作成します。3 番目に、最小ヒット フィールドを持つ 1 つの複合インデックスを作成します。

注: 一度に多数のフィールドがヒットする場合は、複合インデックスを使用します。他のケースでは、単一のインデックス作成が作成されます。

于 2019-11-05T11:18:43.533 に答える