Optimieren von LINQ-zu-SQL-Abfragen

8

Ich habe eine sehr schwere LINQ-zu-SQL-Abfrage, die eine Reihe von Joins auf verschiedene Tabellen ausführt, um einen anonymen Typ zurückzugeben. Das Problem ist, wenn die Menge der zurückgegebenen Zeilen ziemlich groß ist (& gt; 200), dann wird die Abfrage sehr langsam und endet mit dem Zeitlimit. Ich weiß, dass ich die Datenkontext-Timeout-Einstellung erhöhen kann, aber das ist ein letzter Ausweg.

Ich frage mich nur, ob meine Abfrage besser funktionieren würde, wenn ich sie aufteile und meine Vergleiche als LINQ-to-Objects-Abfragen anwende, so dass ich möglicherweise sogar PLINQ verwenden kann, um die Verarbeitungsleistung zu maximieren. Aber ich bin ein fremdes Konzept für mich, und ich kann nicht verstehen, wie ich es aufteilen würde. Kann mir jemand einen Rat geben? Ich verlange nicht, dass der Code für mich geschrieben wird, nur eine allgemeine Anleitung, wie ich das verbessern könnte, wäre großartig.

Hinweis: Ich habe sichergestellt, dass die Datenbank alle richtigen Schlüssel enthält, denen ich mich anschließe, und ich habe sichergestellt, dass diese Schlüssel auf dem neuesten Stand sind.

Die Abfrage ist unten:

%Vor%

Hier ist das generierte SQL wie angefordert:

%Vor%     
Chris 06.09.2011, 14:45
quelle

1 Antwort

3

Versuchen Sie, den Subkontraktor höher zu schieben und die where-Klausel mit zu schieben. Auf diese Weise machen Sie nicht unnötig Joins, die am Ende fehlschlagen würden. Ich würde auch die Auswahl für die Subunternehmer-ID ändern, damit Sie die ID eines möglicherweise Nullwerts nicht erhalten.

%Vor%     
arviman 06.09.2011, 17:34
quelle

Tags und Links