mongodb复合索引和单索引性能



考虑以下场景:

100%的情况下,我的查询会在查询中包含a,有时还会包含b

90%的查询将是:

{a:"somevalue"}

10%是

{a:"somevalue",b:"somevalue"}

如果只使用复合指数(如果有的话)来满足这一点,会有什么负面影响?,像这样:

{
    "v" : 1,
    "key" : {
            "a" : 1,
            "b" : 1
    },
    "name" : "a_1_b_1",
    "ns" : "foo.bar"

}

或者添加第二个索引只满足上的查询,我会从中受益吗

{
    "v" : 1,
    "key" : {
            "a" : 1,
            "b" : 1
    },
    "name" : "a_1_b_1",
    "ns" : "foo.bar"
},
{
    "v" : 1,
    "key" : {
            "a" : 1
    },
    "name" : "a_1",
    "ns" : "foo.bar"
}

手册中有这样一句话;

如果您的集合在{a:1,b:1}上有一个复合索引,以及一个由该索引前缀组成的索引,即{a:1},假设该索引都没有稀疏或唯一约束,则可以删除{a:1}索引。

MongoDB将能够在所有使用{a:1}索引的情况下使用复合索引

换句话说,使用单个索引很可能会获得同样好或更好的性能,因为MongoDB不必在内存中缓存两个索引,也不必在每次插入时更新两个单独的索引。

相关内容

  • 没有找到相关文章

最新更新