1

我有 Mongo 数据库,大小为 30 GB。在 Windows 服务器中,我限制了 RAM 的空间 - 10GB 使用 MongoDb C# 驱动程序我正在尝试执行

query = (from da in collection.AsQueryable<FullTune>()
where da.Letter.Equals(Letter.ToUpper()) && da.Styles.Equals(Style)
select da).OrderBy(a => a.Title).Take(50).ToList();

它消耗 10GB 的 RAM 并挂起服务器,使用 Mongo 控制台进行相同的查询,它工作正常,没有使用 RAM。

如何解决这个性能问题。

4

1 回答 1

1

据我所知,LINQ 提供程序不支持.Equals(),它可能需要在内存中执行它。

此外,作为样式指南,我通常不会像您所做的那样将 LINQ 查询语法与 LINQ 扩展方法样式混合在一起,并且更喜欢保持一致。

无论如何,我建议将您的查询更改为以下内容:

result = collection.AsQueryable<FullTune>()
    .Where(ft => ft.Letter == Letter.ToUpper() && ft.Styles == Style)
    .OrderBy(ft => ft.Title)
    .Take(50);
于 2013-06-11T15:20:12.640 回答