【发布时间】:2014-03-23 17:30:01
【问题描述】:
所以,我不完全理解索引交集和使用复合索引之间的一些区别。
mongodb 是否可以在每个查询中使用多个索引交集?复合索引和索引交集在性能上有什么区别?
【问题讨论】:
标签: mongodb
所以,我不完全理解索引交集和使用复合索引之间的一些区别。
mongodb 是否可以在每个查询中使用多个索引交集?复合索引和索引交集在性能上有什么区别?
【问题讨论】:
标签: mongodb
mongodb 是否可以在每个查询中使用多个索引交集?
索引交集是 MongoDB 2.5.5 开发版本中引入的一项新功能,将包含在 MongoDB 2.6 生产版本中。
索引交集涉及使用多个索引来满足查询;复合索引是多个字段的索引。索引交集可以使用整个索引或复合索引的索引前缀。一般来说,在 MongoDB 2.5.5 中,每个索引交集都涉及两个索引;但是,MongoDB 可以使用多个/嵌套索引交集来解析查询。
复合索引和索引交集在性能上有什么区别?
这将根据您的用例而有所不同。如果没有合适的复合索引来覆盖所有常见查询,则索引交集提供了灵活性,但是复合索引可能更具选择性,并且能够找到检查较少索引条目的结果。相反,如果您能够利用索引交集来替换多个复合索引,则可能会减少索引维护的开销。
您最好的方法是在您的开发/暂存环境中进行测试。
手册中有一个Index Intersection 页面,其中详细介绍了其工作原理。
【讨论】:
每the doc:
MongoDB 只能使用一个索引来支持任何给定的操作。但是,$or 查询的每个子句可能使用不同的索引。
因此,Mongo 中没有“索引交集”的概念。我们鼓励您使用复合索引来提供对查询中所有字段的索引访问,理想情况下,按顺序尽可能减少每个连续字段的搜索空间。
【讨论】: