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);
}
从您的查询中,我能建议使用 $in 而不是$or。
你可以参考为什么在这里$orvs$in
最后查询将如下所示:
db.collection_name.find({Symbol:{$in:[X,Y,Z,A]}})
更喜欢使用跳过和限制来获得更多优化。