我有两个集合,customSchemas和customdata。除了默认的_id索引外,我还添加了以下索引
db.customData.createIndex( { "orgId": 1, "contentType": 1 });
db.customSchemas.createIndex( { "orgId": 1, "contentType": 1 }, { unique: true });
我已决定对所有来电强制执行,因此在我的服务层中,每个查询都有一个orgId,即使是带有ids的orgId,例如
db.customData.find({"_id" : ObjectId("557f30402598f1243c14403c"), orgId: 1});
我应该添加一个同时包含_id和orgId的索引吗?当我通过_id和orgId进行搜索时,我目前是否有帮助的索引?
答案 0 :(得分:0)
MongoDB 2.6+通过在{{1}中使用 index _id {_id:1}
和索引前缀orgId 的交集来提供涵盖您案例的index intersection功能}}
因此,您的查询{ "orgId": 1, "contentType": 1 }
应该已被索引涵盖。
然而,索引交集的性能低于{"_id" : ObjectId("557f30402598f1243c14403c"), orgId: 1}
上的复合索引,因为它带有一个额外的步骤(两个集合的交集)。因此,如果这是您在大多数时间使用的查询,则在其上创建复合索引是个好主意。