Geschwindigkeitsvorteile von Gespeicherten Prozeduren
Verfasst: Mittwoch 9. Mai 2007, 15:35
Hallo!
Es geht um den MS-SQL Server 2000. Es geht um einen gravierenden Geschwindigkeitsunterschied. Es geht um das Filtern von 4 Mio. Datensätzen.
Für einen Bericht muss ich eine temporäre Tabelle (#filtered_sales) mit Bonnummern füllen. Dafür habe ich mir eine kleine Abfrage gebastelt. Die Filterbedingungen stehen in mehreren anderen Tabellen verteilt. Diese Tabellen habe ich mit JOINs eingebunden. Alles kein Problem. -- Aber das Ausführen bei nur 4 Mio. Datensätzen brauchte ca. 30 Sekunden.
Jetzt dachte ich mir: Ich könnte doch mal wieder eine "Gespeicherte Prozedur" aus dieser Abfrage machen und schauen wie viel schneller so eine Gesp. Proz. ist.
Gedacht, getan. Beim ersten Ausführen der Prozedur war diese in etwa gleich schnell. Beim zweiten Auführen brauchte die Prozedur nur mehr 10 Sekunden. (statt 30 Sekunden)
Um das Caching im Speicher auszuschließen, habe ich den SQL-Server neu gestartet. --> immer noch 10 Sekunden.
Ich wusste ja, dass Prozeduren schneller sind als normale SQL-Anweisungen, aber dass es so viel schneller ist, das hätte ich mir nie gedacht. Die Ablaufplanung des MS-SQL Servers bringts voll. Umfangreiche Arbeiten gehören in eine "Gespeicherte Prozedur" oder in eine View.
lg
Gerold
Es geht um den MS-SQL Server 2000. Es geht um einen gravierenden Geschwindigkeitsunterschied. Es geht um das Filtern von 4 Mio. Datensätzen.
Für einen Bericht muss ich eine temporäre Tabelle (#filtered_sales) mit Bonnummern füllen. Dafür habe ich mir eine kleine Abfrage gebastelt. Die Filterbedingungen stehen in mehreren anderen Tabellen verteilt. Diese Tabellen habe ich mit JOINs eingebunden. Alles kein Problem. -- Aber das Ausführen bei nur 4 Mio. Datensätzen brauchte ca. 30 Sekunden.
Jetzt dachte ich mir: Ich könnte doch mal wieder eine "Gespeicherte Prozedur" aus dieser Abfrage machen und schauen wie viel schneller so eine Gesp. Proz. ist.
Gedacht, getan. Beim ersten Ausführen der Prozedur war diese in etwa gleich schnell. Beim zweiten Auführen brauchte die Prozedur nur mehr 10 Sekunden. (statt 30 Sekunden)
Um das Caching im Speicher auszuschließen, habe ich den SQL-Server neu gestartet. --> immer noch 10 Sekunden.
Ich wusste ja, dass Prozeduren schneller sind als normale SQL-Anweisungen, aber dass es so viel schneller ist, das hätte ich mir nie gedacht. Die Ablaufplanung des MS-SQL Servers bringts voll. Umfangreiche Arbeiten gehören in eine "Gespeicherte Prozedur" oder in eine View.
lg
Gerold