Hallo,
Einer Stored Procedure werden unter MS SQL 2000 ein int-Parameter und ein varchar-Parameter übergeben. Ist der int-Parameter gegeben (d.g. ungleich NULL), wird er direkt in einem SELECT-Statement bei WHERE feld = int-Parameter verwendet. Ist dieser int nicht gegeben, hingegen der varchar-Parameter, dann, wird anhand einer Suche über den varchar-Parameter der int-Parameter gesetzt und anschließend im SELECT-Statement verwendet. Wird dieser zweite Ast durchlaufen, so ist die Performanceeinbuße extrem.
Beim Debuggen der procedure werden alle Anweisungen bevor dem SELECT gleich schnell erledigt. Ist der int gegeben, so läuft der SELECT schnell durch, wurde der int aber gesetzt (SET @int-parameter = ...), da er als Parameter den Wert NULL hatte, so dauernd die Ausführung beim SELECT erheblich länger.
Gibt es dafür eine Erklärung?
Gruß<br>
Stephan Schneider
Einer Stored Procedure werden unter MS SQL 2000 ein int-Parameter und ein varchar-Parameter übergeben. Ist der int-Parameter gegeben (d.g. ungleich NULL), wird er direkt in einem SELECT-Statement bei WHERE feld = int-Parameter verwendet. Ist dieser int nicht gegeben, hingegen der varchar-Parameter, dann, wird anhand einer Suche über den varchar-Parameter der int-Parameter gesetzt und anschließend im SELECT-Statement verwendet. Wird dieser zweite Ast durchlaufen, so ist die Performanceeinbuße extrem.
Beim Debuggen der procedure werden alle Anweisungen bevor dem SELECT gleich schnell erledigt. Ist der int gegeben, so läuft der SELECT schnell durch, wurde der int aber gesetzt (SET @int-parameter = ...), da er als Parameter den Wert NULL hatte, so dauernd die Ausführung beim SELECT erheblich länger.
Gibt es dafür eine Erklärung?
Gruß<br>
Stephan Schneider
Comment