提问者:小点点

索引交集vs复合索引?


所以,我不完全理解索引交集和使用复合索引之间的一些区别。

mongodb有可能在每个查询中使用多个索引交集吗?复合索引和索引交集的性能区别是什么?


共2个答案

匿名用户

mongodb有可能在每个查询中使用多个索引交集吗?

索引交集是MongoDB2.5.5开发版本中引入的一个新特性,并将包含在MongoDB2.6生产版本中。

索引交集涉及使用多个索引来满足一个查询;复合索引是多个字段上的索引。索引交集可以使用整个索引或复合索引的索引前缀。通常,在MongoDB 2.5.5中,每个索引交集涉及两个索引;但是,MongoDB可以使用多/嵌套索引交叉来解析查询。

复合索引和索引交集的性能区别是什么?

这将根据您的用例而有所不同。如果没有合适的复合索引来覆盖所有常见查询,则索引交集提供了灵活性,但是复合索引可能更具选择性,并且能够在检查较少的索引条目时找到结果。相反,如果您能够利用索引交集来替换多个复合索引,则可能会有减少索引维护开销的好处。

您的最佳方法是在您的开发/阶段环境中测试这一点。

在手册中有一个索引交集页面,它更详细地介绍了它是如何工作的。

匿名用户

根据文档:

MongoDB只能使用一个索引来支持任何给定的操作。但是,OR查询的每个子句可能使用不同的索引。

这样一来,Mongo中就没有了“索引交集”的概念。建议您使用复合索引,该索引提供对查询中所有字段的索引访问,理想情况下是按照这样的顺序进行,这将尽可能减少每个连续字段的搜索空间。