MongoDB FindAll()枚举缓慢

时间:2014-03-16 22:02:26

标签: c# mongodb mongodb-.net-driver

我有以下代码块,非常简单,但运行速度非常慢。

Users = new Dictionary<string, MongoUser>();

MongoDatabase ace = GetDatabase();
var users = ace.GetCollection("user").FindAll();

foreach (BsonDocument user in users) // This line takes 14 seconds!
{
   TimeSpan span = DateTime.Now - dt;
   span.ToString();
   MongoUser USER = new MongoUser(user);
   Users.Add(USER.MacAddress, USER);

}

此代码块大约需要18秒才能运行。我已对每一行进行了分析,并确定该行(上面标记的)几乎占用了所有时间(14/18秒,~80%)。就数据库而言,我查询的集合有740个非常简单的文档(即5个字段,没有嵌套)。磁盘总大小:0.2MB(因此与网络无关)。

总结一下:

  • 小收集总计
  • 不使用索引,因为我没有查询匹配
  • 不是网络速度
  • 仅在枚举MongoCursor时减慢

有什么想法吗?我真的认为MongoDB和C#驱动程序比这更好,我确信这是我做错了 - 谢谢!

0 个答案:

没有答案