Speichern / Zwischenspeichern Gespeicherte Prozedur Ergebnisse für bessere Leistung? (SQL Server 2005)
Ich habe einen SP, der gearbeitet hat, auf meine 2 Menschen jetzt, dass dauert noch 2 Minuten oder mehr zu laufen. Gibt es eine Möglichkeit, um diese vorab ausgeführt, und die im cache gespeichert oder irgendwo anders so bei meinem client sollte sich diese Daten in einem web-browser, die er nicht will, sich selbst zu hängen oder zu mir?
Ich bin keine, wo in der Nähe ein DBA, so bin ich irgendwie auf die Gnade, die ich mieten, um dies herauszufinden, für mich, so ein wenig Kenntnisse vorne würde mir wirklich helfen aus.
- Sind die Ergebnisse dieser Abfrage angezeigt, die online, also im browser. wenn ja, welche Sprache Sie verwenden oder verwendet wird, derzeit?
- yep, es wird online angezeigt - ich bin mit .Net. Ich weiß, ich kann speichern die Ergebnisse in meiner Anwendung, aber der erste Aufruf dauert mehrere Minuten sind ein echtes problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es wirklich so lange dauert, laufen, könnten Sie planen, den Prozess zum ausführen mithilfe von SQL-Agent, und der Ausgang geht zu einem Tisch, dann ändern Sie die web-Anwendung zum Lesen der Tabelle, anstatt die gespeicherte Prozedur ausführen. Sie müssten entscheiden, wie oft Sie zum ausführen der Aktualisierung, und befassen sich mit den Anforderungen, die auftreten, während es aktualisiert wird, aber das kann behandelt werden, als auch, indem er zwei output-Dateien, eine live-und eine für die neueste aktualisieren.
Aber ich würde einen anderen Blick auf die Vorgehensweise, Blick auf den Ausführungsplan und sehen, wo es langsam ist, stellen Sie sicher, es ist nicht vollständige Tabellen-scans.
Bevorzugten Lösungen in dieser Reihenfolge:
Versuchen "Analysieren Abfragen in der Datenbank-engine tuning advisor" aus dem Menü Abfrage.
Ich in der Regel Skript die Prozedur ein neues Fenster, nehmen Sie die query-definition Teil und versuchen Sie verschiedene Kombinationen von temp-Tabellen reguläre Tabellen und Tabellenvariablen.
Könnte man cache das Ergebnis legen Sie in der Anwendung im Gegensatz zu der Datenbank, entweder im Speicher, indem eine Instanz des datatable -, um, oder durch Serialisierung auf der Festplatte. Wie viele Zeilen hat es zurück?
Ist es zu lang zum posten der code hier?
OK erste Sachen zuerst, Indizes:
Zweitens funktioniert der proc verwenden Sie eine der folgenden performance-Killer:
Dritten
Ich schlage vor, Sie kaufen Ihre Entwickler einige Bücher über performance tuning.
Wahrscheinlicher ist es, dass proc behoben werden können, aber ohne zu sehen, den code, ist es schwer zu erraten, was die Probleme sein könnten.