所以,我并不完全理解索引交集和使用复合索引之间的区别。
mongodb是否可以为每个查询使用多个索引交叉点?复合指数和指数交叉点之间的性能差异是什么?
答案 0 :(得分:7)
mongodb是否可以为每个查询使用多个索引交叉点?
索引交集是MongoDB 2.5.5开发版本中引入的一项新功能,将包含在MongoDB 2.6生产版本中。
索引交集涉及使用多个索引来满足查询;复合索引是多个字段的索引。索引交集可以使用复合索引的整个索引或索引前缀。一般来说,与MongoDB 2.5.5一样,每个索引交叉点都包含两个索引;但是,MongoDB可以使用多个/嵌套索引交叉来解析查询。
复合指数和指数交叉点之间的性能差异是什么?
这将根据您的使用情况而有所不同。如果没有合适的复合索引来覆盖所有常见查询,则索引交集会提供灵活性,但复合索引可能更具选择性,并且能够查找检查较少索引条目的结果。相反,如果您能够利用索引交集来替换多个复合索引,则可以降低索引维护的开销。
您最好的方法是在开发/暂存环境中对此进行测试。
本手册中有一个Index Intersection页面,详细介绍了其工作原理。
答案 1 :(得分:0)
每the doc:
MongoDB只能使用一个索引来支持任何给定的操作。但是,$或查询的每个子句都可以使用不同的索引。
因此,Mongo中没有“索引交集”的概念。建议您使用复合索引来提供对查询中所有字段的索引访问,理想情况是按照每个连续字段尽可能减少搜索空间的顺序。