Ich habe eine Datenbanktabelle mit 100 Millionen Datensätzen. Screen Shot is taken from RobomongoWie kann ich die C# mongodb-Abfrage bei großen Datenadressaten optimieren?
Tabellenschema: There are 100 million records
Wenn ich den folgenden Code ausführen. Ich bekomme Ergebnisse, aber es dauert ungefähr 1 Minute, um abgeschlossen zu werden. Ich muss die Abfrage optimieren, um Ergebnisse schneller zu erhalten. Was ich bis jetzt gemacht habe, ist hier. Bitte sagen Sie mir, wie Sie das optimierte Ergebnis erreichen können.
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());
Out Put ist:
- Zeit Bilanz zu holen: 00: 00: 00,0059207
- Zeit var konvertieren zur Liste: 00: 01: 00,7209163
- Gesamtzählung in der Liste: 1003154
Ich habe einige Fragen zu dem angegebenen Code.
- Wenn line collection.Find (filt) ausgeführt wird, ruft es gefilterte Datensätze aus der Datenbank ab OR Just creating filter?
- var list1 = list.ToList(); dauert 1 Minute um ausgeführt zu werden, wird nur von var zu Liste konvertiert OR Erste Daten holen als konvertieren?
- Wie erreicht man diese Abfrage und Ergebnis in möglichst wenig Zeit. Bitte Hilfe.
Vielen Dank für die bereitgestellten Informationen. Ich habe versucht, indem ich den Index auf der Wertspalte machte, aber es half nicht. Irgendein anderer Weg zur Lösung? – Umer