MongoDB与SQL Server中的$ group聚合比较?

时间:2017-05-10 05:19:30

标签: sql-server mongodb aggregation-framework

我有一个简单的MongoDB集合,格式如下:

Items:[
{
    TopicID    : 1,
    SubTopicID : 1,
    TopicDescription : "ABC"
},
{
    TopicID    : 1,
    SubTopicID : 2,
    TopicDescription : "BCD"    
},
{
    TopicID    : 2,
    SubTopicID : 1,
    TopicDescription : "CDE"    
}
..
..]

我有200万件物品的清单。

在聚合管道上为此执行简单的$group

$group : {
           _id : "$TopicID",
           count: { $sum: 1 }
        }

大约需要5秒钟(使用allowDiskUse : true

但是,将其分组到结构表中:

Items:
TopicID INT,
SubTopicID INT,
TopicDescription NVARCHAR(1000)

在类似配置的系统中,在SQL Server中获取SubTopics的计数只需要几秒钟。我在TopicID中为MongoDB和SQL Server表创建了索引。

以下是解释:

{
    "stages" : [ 
        {
            "$cursor" : {
                "query" : {},
                "fields" : {
                    "TopicID" : 1,
                    "_id" : 0
                },
                "queryPlanner" : {
                    "plannerVersion" : 1,
                    "namespace" : "mkl.Items",
                    "indexFilterSet" : false,
                    "parsedQuery" : {},
                    "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "direction" : "forward"
                    },
                    "rejectedPlans" : []
                }
            }
        }, 
        {
            "$group" : {
                "_id" : "$TopicID",
                "Count" : {
                    "$sum" : {
                        "$const" : 1.0
                    }
                }
            }
        }
    ],
    "ok" : 1.0
}

仅为TopicID集合

索引Items

我有什么办法可以为这个用例增加mongodb性能吗?

0 个答案:

没有答案