首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb复合指标与单指标性能

mongodb复合指标与单指标性能
EN

Stack Overflow用户
提问于 2014-09-28 13:32:21
回答 1查看 972关注 0票数 0

考虑以下情况:

100%的时间,我的查询将包括a在查询中,有时还包括b

90%的查询将是:

代码语言:javascript
复制
{a:"somevalue"}

百分之十将会是

代码语言:javascript
复制
{a:"somevalue",b:"somevalue"}

只使用复合索引(如果有的话)来满足这一点会有什么不好呢?如下所示:

代码语言:javascript
复制
{
    "v" : 1,
    "key" : {
            "a" : 1,
            "b" : 1
    },
    "name" : "a_1_b_1",
    "ns" : "foo.bar"

}

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

代码语言:javascript
复制
{
    "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"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-28 13:42:37

手册有话要说;

如果有一个集合对{ a: 1,b: 1 }具有复合索引,以及包含该索引前缀(即{ a: 1 } )的索引,那么可以删除{ a: 1}索引。MongoDB将能够在所有使用{ a: 1}索引的情况下使用复合索引。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26085376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档