Frage Beeinträchtigt die Reihenfolge der EF linq Query-Klauseln die Performance?


Sollte ich mich über die Reihenfolge der LINQ-Abfrageklauseln von Entity Framework in Bezug auf die Leistung Gedanken machen?

Im folgenden Beispiel könnte die Änderung der Reihenfolge der beiden where-Klauseln sich auf die DB-Suche auswirken.

        using (var context = new ModelContext())
        {
            var fetchedImages = (from images in context.Images.Include("ImageSource")
                                 where images.Type.Equals("jpg")
                                 where images.ImageSource.Id == 5
                                 select images).ToArray();
        }

5
2018-03-21 08:13


Ursprung


Antworten:


Nein, das Ändern dieser beiden where Klauseln wirken sich nicht auf die Leistung aus. Generiertes SQL wird trotzdem so aussehen:

WHERE [condition1] AND [condition2]

Außerdem können Sie Bedingungen in Kombination mit logischen Operatoren schreiben:

where images.Type.Equals("jpg") && images.ImageSource.Id == 5

4
2018-03-21 08:18



Der allgemeine Fall ist, dass die where Operatoren werden "kurzgeschlossen", wenn also der erste falsch ist, wird der zweite nicht einmal untersucht. Wenn also ein Fehler häufiger auftritt, sollten Sie ihn in der Regel zuerst überprüfen.

Dies bricht jedoch zusammen, wenn der häufigere Fehler nur langsam verarbeitet wird.

Die einzige Möglichkeit, dies sicher festzustellen, besteht darin, Ihren Code mit geeigneten Tools zu erstellen.


-1
2018-03-21 09:08