MongoDB获取速度很慢

本文关键字:速度 获取 MongoDB | 更新日期: 2023-09-27 18:35:27

我需要运行以下查询并在尽可能接近毫秒的时间内获得结果。以下查询返回 200,000 条记录(4 列,每列值为 5 位)。

在RoboMongo上尝试了以下查询:

db.MarketData.find(
   {
     $or: [ { Symbol: "X" }, { Symbol: "Y" }, { Symbol: "Z" },{ Symbol: "A" }]
   }
).sort({ColumnB:-1});

查询时间表示在 Robomongo 上执行 0.001 秒。看起来它一次获取的结果很少。但是,当我在 C# 上运行查询时,需要接近 3 秒的时间。一切都在一台机器上运行,因此不会对网络产生影响等。我能做些什么来进一步缩短响应时间?例如,任何缓冲区设置等或任何您能想到的东西?

C# 代码:

public static async void ProcessDataAsync()
{
    Console.WriteLine(DateTime.Now.TimeOfDay);
    var collection = _database.GetCollection<BsonDocument>("MarketData");
    var builder = Builders<BsonDocument>.Filter;
    var filter = builder.Eq("Symbol", "X") | builder.Eq("Symbol", "Y") | builder.Eq("Symbol", "Z") | builder.Eq("Symbol", "A");
    var sort = Builders<BsonDocument>.Sort.Descending("ColumnB");
    var task = collection.Find(filter).Sort(sort).ToListAsync();
    var x = await task;
    Console.WriteLine(DateTime.Now.TimeOfDay);
}

MongoDB获取速度很慢

从您的查询中,我能建议使用 $in 而不是$or。

你可以参考为什么在这里$orvs$in

最后查询将如下所示:

db.collection_name.find({Symbol:{$in:[X,Y,Z,A]}})

更喜欢使用跳过和限制来获得更多优化。