多个单场与复合索引

时间:2018-02-08 02:04:56

标签: mongodb indexing

创建多个单字段索引与复合索引的区别如下

db.products.createIndex( { "item": 1 } )
db.products.createIndex( { "stock": -1 } )

VS

db.products.createIndex( { "item": 1, "stock": -1 }

此外,在创建复合索引后,我是否需要为每个itemstock单独创建一个字段索引?如果是的话,在什么情况下我需要这样做?

1 个答案:

答案 0 :(得分:2)

答案取决于您的查询模式。

复合索引满足以下查询

  • 查找"项目"
  • 查找"项目"和" stock"
  • 查找"项目"并按" stock"
  • 订购
  • 查找"项目"和" stock",按" item asc"," stock desc"
  • 排序

以上复合索引不会用于" stock"单独的领域。所以你需要一个单独的索引。

单个索引仅满足该特定字段的查询。

  • 例如" item"将使用" item"来满足查询在查找标准。
  • 同样指数" stock"将满足" stock"在查找标准。

如果这两个索引分开存在且查询包含" item"和" stock",然后选择索引取决于更高的基数。这两者中的哪个领域将允许MongoDB更好地缩小结果集。

进一步阅读compound index