簡體   English   中英

mongodb復合索引和單索引性能

[英]mongodb compound index and single index performance

請考慮以下情形:

我的查詢有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不必在內存中緩存兩個索引或在每次插入時更新兩個單獨的索引,因此使用單個索引很可能會獲得相同或更好的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM