2010-11-18 5 views
1

So habe ich diese Seite, die wie viele Methoden in es hat .. eine Methode ist das Abrufen von Benutzer-E-Mail .. ein bindender Repeater ist, ändert ein anderes Passwort und alle. Jetzt wird in jeder Methode eine gespeicherte Prozedur aufgerufen und Änderungen in der DB vorgenommen.In Bezug auf die Minimierung von SQL-Server-Aufrufe

So sieht meine Seite Page_Load Ereignis wie folgt aus: -

protected void Page_Load(object sender, EventArgs e) 
    { 

       BindCon(); 
       getemail(); 
       getadd(); 
       BindRepeater(); 

       getpic(); 


} 

Nun ist diese Art und Weise SQL-Server wie über und über die Auswirkungen auf die Leistung genannt wird wird. Ich dachte, möglicherweise kann ich eine gespeicherte Prozedur erstellen, die alle gespeicherten Prozeduren, die in den oben genannten Methoden verwendet werden, einmal ausführen und den SQL-Server nicht immer wieder aufrufen, wie oben beschrieben. Nun, wie erstelle ich das gespeicherte P und benutze es in meinem Code ?? brauche Ideen ... thnx

+3

Die Antwort hängt davon ab, wie Sie Ihre aktuellen DB-Aufrufe machen. 'SqlCommand'? Linq-zu-Entitäten? Teilen Sie etwas von diesem Code. – BeemerGuy

+0

Haben Sie aktualisiert..please help..thnx – Serenity

+1

als eine Nebenbemerkung, möchten Sie vielleicht die Verwendung der "sp_" Präfix auf Ihrem Namen sproc, wenn Sie leistungsabhängig sind. http://blog.sqlauthority.com/2010/02/16/sql-server-stored-procedure-optimization-tips-best-practices/ – Matt

Antwort

2

Wenn Sie alle diese Dinge einzeln aus einer Zeile in einer Tabelle (Konto, E-Mail, Alter, sagen) erhalten, sollten Sie sie alle auf einmal in einer einzigen Zeile anstelle eines Aufrufs für jede Spalte erhalten.

Darüber hinaus, wenn Sie Dinge aus separaten Tabellen, die mit Joins kombiniert werden können, um eine einzelne Zeile (Konto, Anzahl der Nachrichten im Posteingang, Kontostand) zu kombinieren, können Sie dies in der SP und erhalten eine einzige Reihe.

Wenn die Dinge wirklich separate Entitäten sind (eine Zeile für Benutzerkonto, mehrere Zeilen für Berechtigungen), können Sie auch mehrere Ergebnissätze aus Ihrem gespeicherten Proc zurückgeben und die ADO.NET-Funktion verwenden, mit der Sie die nächste Ergebnismenge abrufen können .

Beachten Sie, dass es in einigen Fällen mit länger ausgeführten SPs besser sein kann, alle SPs mit asyncem ADO.NET parallel aufzurufen, da ein einzelner SP die Ausführung der Operationen in Serie erzwingt.

In jedem Fall, in dem Ihre Datenbank mehrere Subsysteme durchschneidet, können Sie Wartungsprobleme verursachen, da Sie möglicherweise einen SP erstellen, der Entitätsgrenzen überschreitet und von Änderungen an beiden Subsystemen betroffen ist. Wenn möglich, müssen Sie einen übergreifenden SP-Aufruf in jeder Entitätsdomäne ausführen, um zu versuchen, sie so weit wie möglich zu entkoppeln. Auch wenn es aufgrund einer zukünftigen Änderung geändert werden muss, sollte dies zumindest die Abhängigkeit verdeutlichen.

0

können Sie den SQL-Profiler ausführen, analysieren, was wiederholt wird und diejenigen reduzieren, die Sie normalerweise nicht benötigen. Da Sie ASP.Net verwenden, können Sie Zustände wie Sitzung, Anwendung und Cache nutzen, um Daten je nach Bedarf zu speichern.