创建多个单字段索引与复合索引的区别如下
db.products.createIndex( { "item": 1 } )
db.products.createIndex( { "stock": -1 } )
VS
db.products.createIndex( { "item": 1, "stock": -1 }
此外,在创建复合索引后,我是否需要为每个item
,stock
单独创建一个字段索引?如果是的话,在什么情况下我需要这样做?
答案 0 :(得分:2)
答案取决于您的查询模式。
复合索引满足以下查询
以上复合索引不会用于" stock"单独的领域。所以你需要一个单独的索引。
单个索引仅满足该特定字段的查询。
如果这两个索引分开存在且查询包含" item"和" stock",然后选择索引取决于更高的基数。这两者中的哪个领域将允许MongoDB更好地缩小结果集。
进一步阅读compound index。