所以我有一个典型的
db.collection.find({field1:1}).sort({field2:1})
现在,假设我在这个集合上有三个索引:
现在我的问题,mongoDB如何对待上面的查询?在这样的查询中将使用哪些索引--两个单一索引还是一个复合索引?
如果我移除复合索引,它实际上是否利用了两个单一索引,但减慢了速度?
如果我明白你的意思,这可能会有帮助:
假设你有这些文件作为样品
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
步骤1:只为filed1(索引字段1_1的名称)创建索引:执行:
mongo使用field1_1索引在文档中搜索。explain()的结果是:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
步骤2:添加复合索引,命名为field1_1_field2_1,现在Field1有2个索引。
执行
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
结论:
如果使用
如果使用
在您的案例中,如果您只有field1_1_field2_1索引,并且正在执行