2016-10-24 5 views
2

Wir verwenden Ansichten in Entity Framework. Wenn ich die Programmansicht in SQL Server ausführte, wurde es in 2 Sekunden schnell gerendert. Ich habe einfache linq Abfrage/Lambda-Ausdruck erstellt, um die Ausgabe in oder Anwendung zu erhalten, aber es dauert mehr als 2 Minuten, um das Endergebnis zu erhalten. Ich bin mir nicht sicher, wie die gleiche Ansicht im Backend (SQL Server) schnell ausgeführt wird, wodurch ein Problem entsteht, wenn ich es über Entity Framework verwende.Verbessern der Leistung einer Entity Framework linq Abfrage

C#

this.db.progamview.Where(x => 
          x.pId== 6&& 
           x.qId== 12 
          && x.RId== 20151 
          && x.cId== 102) 

Ich habe versucht, das Timeout zu setzen, aber noch ist es nicht funktioniert. Wie können wir die Leistung in Entity Framework verbessern, wenn wir große Datenmengen verarbeiten oder mit den Ansichten in EF arbeiten, die große Datensätze abrufen?

Versucht AsNotracking Methode wie unten, aber kein Glück.

this.db.progamview.Where(x => x.pId== 6 && x.qId== 12 && x.RId== 20151 && x.cId== 
102).AsNoTracking(); 

Version: EF6.1 

Es gibt 18 Spalten zurück. Ich brauche alle Spalten im Frontend anzuzeigen.

Die unten beschriebenen Methoden werden immer noch zu spät ausgegeben. d.h. 4-5 Minuten dauern, um das Ergebnis zu ergeben.

  1. Zeit Eigenschaft in Zusammenhang

  2. AsNotracking Methode

Client-Statistiken Screenshot unten

enter image description here

Jede andere bessere Möglichkeit, die Leistung zu verbessern?

+0

Wie viele Spalten und Zeilen gibt der SQL Server zurück? und wie viel Bytes werden übertragen? – Fredou

+0

@fredou aktualisierte Frage – SivaRajini

+0

könnten Sie die genaue Anzahl angeben? Können Sie einen Screenshot der Client-Statistik hochladen? (von sql Management Studio) – Fredou

Antwort

0

Sie können Indizes in Datenbanken hinzuzufügen. Wenn Sie zuerst Code verwenden, können Sie das Attribut [Index] hinzufügen.

+0

@Wojtpls verwenden wir db ersten Ansatz. Wir haben bereits Ansichten erstellen, nur wir rufen die Ansichten von Entityframework – SivaRajini

+0

Wenn Sie zuerst Datenbank verwenden, können Sie Ansicht als Tabelle verwenden. Es würde Ihnen die beste Leistung im Vergleich zur Linkabfrage geben –

+0

@PankajRawat wir verwenden nur Ansichten – SivaRajini

Verwandte Themen