【发布时间】:2017-12-11 16:43:53
【问题描述】:
我有一个包含 1 亿条记录的数据库表。 Screen Shot is taken from Robomongo
表架构:There are 100 million records
当我运行以下代码时。我得到了结果,但大约需要 1 分钟才能完成。我需要优化查询以更快地获得结果。我到目前为止所做的就在这里。请告诉我实现优化结果的前进方向。
var collection = _database.GetCollection<BsonDocument>("FloatTable1");
var sw = Stopwatch.StartNew();
var builder = Builders<BsonDocument>.Filter;
int min = Convert.ToInt32(textBox13.Text); //3
int max = Convert.ToInt32(textBox14.Text); //150
var filt = builder.Gt("Value", min) & builder.Lt("Value", max);
var list = collection.Find(filt);
sw.Stop();
TimeSpan time = sw.Elapsed;
Console.WriteLine("Time to Fetch Record: " + time.ToString());
var sw1 = Stopwatch.StartNew();
var list1 = list.ToList();
sw1.Stop();
TimeSpan time1 = sw1.Elapsed;
Console.WriteLine("Time to Convert var to List: " + time1.ToString());
Console.WriteLine("Total Count in List: " + list1.Count.ToString());
输出是:
- 获取记录的时间:00:00:00.0059207
- 将 var 转换为 List 的时间:00:01:00.7209163
- 列表总数:1003154
我对给定代码的问题很少。
- 当 line collection.Find(filt) 执行时,它是从数据库中获取过滤记录还是只是创建过滤器?
- var list1 = list.ToList();执行需要 1 分钟,是仅从 var 转换为 list 还是先获取数据而不是转换?
- 如何在最短的时间内完成此查询和结果。请帮忙。
【问题讨论】:
标签: c# mongodb mongodb-query mongodb-.net-driver robo3t