2017-12-30 56 views
2

Ich habe diesen Code:Mögliches Performance-Problem mit Azure Abfrage

IEnumerable<Users> allItems = await MobileService.GetTable<Users>().CreateQuery().ToEnumerableAsync(); 

foreach (var item in allItems) { 
    if (item.Email.Equals(emailEntry.Text)) { 
     emailIsValid = true; 
    } 
} 

, die alle Einzelteile in meiner azur Tabelle abruft und dann überprüfe ich, ob die E-Mail in dem Textfeld eingegeben gültig ist (entspricht einer in dem azur Tisch). Die Frage ist, es scheint mir, dass mit der Möglichkeit von Tausenden von Benutzer-Logs in meiner Tabelle weiß ich nicht, ob diese Methode der E-Mail-Validierung ist leistungsfähig machbar, wenn es nicht machbar ist, was wäre ein besserer Weg zu tun Dies?

+0

konstruieren Sie die Abfrage, um die meisten schweren Lasten auf dem Server zu tun. Wenden Sie einen Filter an, um Daten über die Leitung zu reduzieren. – Nkosi

Antwort

3

Konstruieren Sie die Abfrage, um die meisten schweren Lasten auf der Serverseite zu erledigen. Wenden Sie einen Filter an, um die Datenmenge über die Verbindung zu reduzieren.

So etwas wie dieses

var email = emailEntry.Text; 
var query = await MobileService.GetTable<Users>() 
           .Where(item => item.Email == email) 
           .ToEnumerableAsync(); 

var emailIsValid = query.Any(); 

Es sei denn, es notwendig alle Benutzer zu verwenden ist dann keine Notwendigkeit, alle von ihnen zu bekommen.