mongodb有可能在每个查询中使用多个索引交集吗?
索引交集是MongoDB2.5.5开发版本中引入的一个新特性,并将包含在MongoDB2.6生产版本中。
索引交集涉及使用多个索引来满足一个查询;复合索引是多个字段上的索引。索引交集可以使用整个索引或复合索引的索引前缀。通常,在MongoDB 2.5.5中,每个索引交集涉及两个索引;但是,MongoDB可以使用多/嵌套索引交叉来解析查询。
复合索引和索引交集的性能区别是什么?
这将根据您的用例而有所不同。如果没有合适的复合索引来覆盖所有常见查询,则索引交集提供了灵活性,但是复合索引可能更具选择性,并且能够在检查较少的索引条目时找到结果。相反,如果您能够利用索引交集来替换多个复合索引,则可能会有减少索引维护开销的好处。
您的最佳方法是在您的开发/阶段环境中测试这一点。
在手册中有一个索引交集页面,它更详细地介绍了它是如何工作的。
根据文档:
MongoDB只能使用一个索引来支持任何给定的操作。但是,OR查询的每个子句可能使用不同的索引。
这样一来,Mongo中就没有了“索引交集”的概念。建议您使用复合索引,该索引提供对查询中所有字段的索引访问,理想情况下是按照这样的顺序进行,这将尽可能减少每个连续字段的搜索空间。