我有一個數據庫表有1億條記錄。 Screen Shot is taken from Robomongo如何優化大型數據庫上的C#mongodb查詢?
表模式: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列出:00:01:00.7209163 在列表
- 總數: 1003154
我有幾個問題與給定的代碼有關。
- 當行collection.Find(filt)執行時,它是否從數據庫中提取過濾的記錄或者只是創建過濾器?
- var list1 = list.ToList();需要1分鐘執行,它只是從var轉換爲列表或第一次獲取數據比轉換?
- 如何實現此查詢並儘可能縮短時間。請幫忙。
感謝您提供的信息。我試圖通過在Value列上創建索引,但它沒有幫助。任何其他方式向解決方案邁進? – Umer