Mongodb 多个单字段索引与复合索引

Mongodb 多个单字段索引与复合索引,mongodb,indexing,Mongodb,Indexing,创建多个单字段索引与以下复合索引的区别是什么 db.products.createIndex( { "item": 1 } ) db.products.createIndex( { "stock": -1 } ) vs 此外,在创建复合索引后,是否需要为每个项目,股票,分别创建单个字段索引?如果是,在什么情况下我需要这样做?答案取决于您的查询模式 复合索引满足以下查询 查找“项目” 查找“项目”和“库存” 查找“项目”并按“库存”订购 查找“项目”和“库存”,按“项目asc”、“库存说明”订

创建多个单字段索引与以下复合索引的区别是什么

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


此外,在创建复合索引后,是否需要为每个
项目
股票
,分别创建单个字段索引?如果是,在什么情况下我需要这样做?

答案取决于您的查询模式

复合索引满足以下查询

  • 查找“项目”
  • 查找“项目”和“库存”
  • 查找“项目”并按“库存”订购
  • 查找“项目”和“库存”,按“项目asc”、“库存说明”订购
以上复合索引不单独用于“库存”字段的查询。所以你需要一个单独的索引

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

  • 例如,“item”上的索引将满足find条件中带有“item”的查询
  • 类似地,“stock”上的索引将满足find条件中带有“stock”的查询
如果这两个索引分别存在,并且查询同时包含“item”和“stock”,则选择的索引取决于更高的基数。这就是这两个字段中的哪个字段将允许MongoDB更好地缩小结果集的范围

进一步阅读

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