Abfrageperformance - WHERE zuvor als Variable angelegt

15/08/2008 - 11:38 von Egon Kall | Report spam
Hallo,

folgendes ist mir nicht ganz klar. Die Performance folgender Abfragen ist
reproduzierbar unterschiedlich.

langsam (20 s):
SELECT ..Felder... FROM TAB001 WHERE TAB001.Feld = 'Limit'

schnell (5s):
DECLARE @sLimit varchar(20)
SET @sLimit = 'Limit'
SELECT ..Felder... FROM TAB001 WHERE TAB001.Feld = @sLimit

Wie muss ich mir das erklàren?

Grüße
EK
 

Lesen sie die antworten

#1 Henry Habermacher
15/08/2008 - 11:54 | Warnen spam
Hallo Egon

"Egon Kall" wrote in message
news:uSKXyqr$

langsam (20 s):
SELECT ..Felder... FROM TAB001 WHERE TAB001.Feld = 'Limit'

schnell (5s):
DECLARE @sLimit varchar(20)
SET @sLimit = 'Limit'
SELECT ..Felder... FROM TAB001 WHERE TAB001.Feld = @sLimit

Wie muss ich mir das erklàren?



Im ersten Fall muss der SQL Server das Statement parsen und anhand der
Statistiken den optimalen Zugriff festlegen. Im zweiten Fall muss das auch
gemacht werden, nur dass das der Statement Cache beim nàchsten Aufruf das
gleiche Statement erkennt und es wieder gleich aufrufen kann, wie das letzte
mal. Es muss dann nur noch der Parameter abgefüllt werden.

Das zweite Statement ist dem ersten wegen der Parametrisierung und der damit
reduzierten Einschlàusung von böswilligem Code in jedem Fall vorzuziehen.

Gruss
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen