MongoDB索引和投影
关于MongoDB,我有几个问题: (1) 索引有助于投影吗 (2) 我为一个集合分配了许多索引,并尝试使用排序运行查找,然后使用MongoDB索引和投影,mongodb,mongodb-indexes,Mongodb,Mongodb Indexes,关于MongoDB,我有几个问题: (1) 索引有助于投影吗 (2) 我为一个集合分配了许多索引,并尝试使用排序运行查找,然后使用explain,它在排序字段上显示BtreeCursor索引 可能是其他索引在查询部分有所帮助,而explain只是没有显示它,因为它只显示帮助查找的最后一个索引 或者explain应该显示所有有助于查询、排序等的索引 谢谢 索引有助于投影吗 我相信,只有当查询被“覆盖”时(由性能等定义),它才会真正有帮助: 例如,如果您想查询{d:1,e:2}并返回{u id,t,
explain
,它在排序字段上显示BtreeCursor
索引
可能是其他索引在查询部分有所帮助,而explain
只是没有显示它,因为它只显示帮助查找的最后一个索引
或者explain
应该显示所有有助于查询、排序等的索引
谢谢
索引有助于投影吗
我相信,只有当查询被“覆盖”时(由性能等定义),它才会真正有帮助:
例如,如果您想查询{d:1,e:2}
并返回{u id,t,e}
,您可以执行以下操作:
db.t.ensureIndex({d:1 , e:1, _id:1, t:1});
db.t.find({d:1, e:2}, {_id:1, t:1, e:1});
该查询的explain()
输出将以索引的方式显示,这意味着它从未从磁盘加载文档以返回响应
因此,是的,索引在某些情况下有助于预测
我给一个集合分配了许多索引,并尝试使用sort运行find,然后使用explain,它在排序字段上显示BtreeCursor索引
是的
可能是其他索引在查询部分起到了帮助作用,而explain没有显示它,因为它只显示了帮助查找的最后一个索引
如果您是索引交叉的受害者,那么您将使用explain(true)
来显示所使用的所有索引计划
值得注意的是,单独的索引不用于交叉查找和排序,因此这里的答案实际上是否定的: