用于缓慢不同查询的正确索引

时间:2014-09-06 12:07:27

标签: mongodb

我使用了带有过滤器定义的distict查询,并且在具有73K项目的数据库上查询速度很慢。查询如下所示:

db.runCommand({ "distinct": "companies", "key": "approver", 
                "query": { "doc_readers": { "$in": [ "ROLE_USER", "ROLE_MODUL_CUST", "ROLE_MODUL_PROJECTS" ] } } })

查询统计信息在这里:

 "stats" : {
                "n" : 73394,
                "nscanned" : 146788,
                "nscannedObjects" : 73394,
                "timems" : 292,
                "cursor" : "BtreeCursor doc_readers_1"
},

它显示它检查每个项目以获得不同的批准者列表。有没有办法如何创建一个更好的索引来加速事情?我在一个网页上有3个类似的查询,所以他们一起花费1秒来获取数据。

更新1:我有以下索引

只有第一个被用作统计数据......

 {
        "v" : 1,
        "key" : {
                  "doc_readers" : 1
            },
        "name" : "doc_readers_1",
        "ns" : "netnotes.companies",
        "sparse" : false
}, 
{                                                       
        "v" : 1,                                        
        "key" : {                                       
                "doc_readers" : 1,                      
                "approver" : 1                      
        },                                              
        "name" : "doc_readers_1_schvalovatel_1",        
        "ns" : "netnotes.companies"                     
},                                                      
{                                                       
        "v" : 1,                                        
        "key" : {                                       
                "approver" : 1,                     
                "doc_readers" : 1                       
        },                                              
        "name" : "schvalovatel_1_doc_readers_1",        
        "ns" : "netnotes.companies"                     
},

0 个答案:

没有答案