>我有一组照片。可以从其他一些集合(事件、新闻、帖子等)中引用它们(一对多)
我可以像这样创建引用:
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})
在第一种情况下,我们有一个大的复合指数在第二个 — 一些较小的索引
每种方法的优缺点是什么?
首先,检查哪个字段的命中数。其次,创建一个具有最大命中字段的复合索引。第三,创建一个具有最小命中字段的复合索引。
注意:如果一次命中大量字段,则使用复合索引。其他情况会创建单个索引。