mongodb复合指数和单指数表现

时间:2014-09-28 13:32:21

标签: mongodb compound-index

考虑以下情况:

我的查询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"

}

或者我会从添加仅满足 a

的查询的第二个索引中受益
{
    "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"
}

1 个答案:

答案 0 :(得分:2)

The manual有这个说法;

  

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

     

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

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