2 Stimmen

Lesen von großen Daten mit SQL Stored Procedure und C# (SQL Server 2005)

Wir haben eine Anforderung, große Daten aus der SQL Server 2005-Datenbank für Berichtszwecke abzurufen. Unser gespeichertes Verfahren gibt mehr als 15.000 Zeilen zurück.

Wenn ich das Verfahren aus der Anwendung (MVC 4.0) aufrufe, läuft die Anfrage ab!!! (Möglicherweise aufgrund der Datengröße)

Gibt es eine bewährte Methode, um solch große Daten aus der SQL Server 2005-Datenbank mit MVC 4.0-Anwendung zu lesen???

3voto

zmbq Punkte 36669

Sie sehen eine Zeitüberschreitung, weil Ihre SQL-Abfrage lange dauert, um abzuschließen. Dies liegt nicht an der Größe des Ergebnisses (15.000 Datensätze sind keine riesige Datenmenge), sondern daran, dass die Abfrage ineffizient ausgeführt wird.

Vielleicht fehlen Ihnen ein paar Indizes, vielleicht ist die gespeicherte Prozedur falsch geschrieben - von hier aus ist es unmöglich zu wissen. Versuchen Sie, Ihre Abfrage oder Datenbank zu optimieren (wenn Sie einen DBA zur Verfügung haben, können sie helfen. Wenn nicht, kann das Management Studio einige Tipps für Sie haben).

Wenn Sie die Abfrage oder die Datenbank nicht optimieren können, bleiben Ihnen nur noch die Erhöhung der Zeitüberschreitung, wie von anderen vorgeschlagen.

1voto

Sasidharan Punkte 3676

Selbst ich hatte das gleiche Problem, aber ich musste mehr als 1,48,000 Datensätze rendern. Die Lösung dafür ist die Verwendung von Multithreading. Sie werden eine Methode haben, die die Daten aus der Datenbank abruft, rufen Sie diese spezielle Methode in einem separaten Thread auf. Ihre Daten werden in weniger als 5 Sekunden geladen sein. Multithreading wurde nur eingeführt, um eine große Menge von Daten ohne Leistungseinbußen zu manipulieren.

0voto

Dhaval Panchal Punkte 130

Die erste Frage lautet, warum Sie Dataset und Data Source View nicht im Reporting verwenden (falls es sich um ein Reporting im SQL Server handelt).

Wenn es sich nicht um Reporting Services handelt und Sie nur C#-Code verwenden möchten, versuchen Sie, einige Hilfsfunktionen dafür zu erstellen.

Siehe hier für die Timeout-Option http://forums.asp.net/t/1040377.aspx

und auch hier für die Optimierung des Codes und der gespeicherten Prozeduren enter link description here

0voto

Phill C Punkte 606

Hier sind ein paar Tipps, wie Sie dies optimieren können:

Optimieren Sie die Abfrage - sehen Sie, ob Sie Ihre Abfrage auf irgendeine Weise optimieren können. Fügen Sie Indizes zu Ihren Tabellen hinzu, überprüfen Sie Where-Anweisungen und dergleichen... Ich kann Ihnen keine spezifischen Empfehlungen geben, ohne die Abfrage zu sehen und das Schema zu kennen. Sehen Sie, was andere zu diesem Thema bereits vorgeschlagen haben.

Begrenzen Sie die Menge der von der gespeicherten Prozedur zurückgegebenen Daten - ich vermute, dass die MVC-App nicht wirklich alle 15k Zeilen benötigt, sondern viel weniger. Schauen Sie sich diesen Beitrag an: effiziente Möglichkeit, Paging zu implementieren. Dies wird die Abfrage nicht so sehr beschleunigen, aber die App effizienter machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X