【问题标题】:Index intersection vs. compound index?索引交集与复合索引?
【发布时间】:2014-03-23 17:30:01
【问题描述】:

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

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

【问题讨论】:

标签: mongodb


【解决方案1】:

mongodb 是否可以在每个查询中使用多个索引交集?

索引交集是 MongoDB 2.5.5 开发版本中引入的一项新功能,将包含在 MongoDB 2.6 生产版本中。

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

复合索引和索引交集在性能上有什么区别?

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

您最好的方法是在您的开发/暂存环境中进行测试。

手册中有一个Index Intersection 页面,其中详细介绍了其工作原理。

【讨论】:

    【解决方案2】:

    the doc:

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

    因此,Mongo 中没有“索引交集”的概念。我们鼓励您使用复合索引来提供对查询中所有字段的索引访问,理想情况下,按顺序尽可能减少每个连续字段的搜索空间。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2014-08-21
    相关资源
    最近更新 更多