Forums Neueste Beiträge
 

Performanceunterschiede bei Sicht mit WHERE-Bedingung (SQL 2008 / SP1)

01/04/2010 - 13:40 von Gerald Aichholzer | Report spam
Hallo NG,

ein Kollege hat beim Ausführen einer Sicht extreme
Performanceunterschiede zwichen den beiden folgenden
Szenarien:

a) SELECT *
FROM view_daten
WHERE company = '2301'
AND criteria = 'xxx'


b) DECLARE @company NVARCHAR(4)
SET @company = (select ...)

SELECT *
FROM view_daten
WHERE company = @company
AND criteria = 'xxx'


Im Fall a) wird das komplette Ergebnis nach 4 Sekunden
geliefert, im Fall b) dauert die Ausführung der Abfrage
400 Sekunden.

Warum gibt es hier so extreme Unterschiede?
Nach meinem Verstàndnis sollte es eigentlich gleich sein,
die Ausführungsplàne sind jedoch total unterschiedlich.

Die Sicht ist relativ komplex, beide Felder in der WHERE-
Bedingung sind vom Typ NVARCHAR(xx).

Als Datenbank kommt der SQL Server 2008 mit SP1 zum Ein-
satz.

Vielen Dank für Tipps und schöne Grüße,
Gerald
 

Lesen sie die antworten

#1 Stefan Hoffmann
01/04/2010 - 14:01 | Warnen spam
hallo Gerald,

On 01.04.2010 13:40, Gerald Aichholzer wrote:
a) SELECT *
FROM view_daten
WHERE company = '2301'
AND criteria = 'xxx'


b) DECLARE @company NVARCHAR(4)
SET @company = (select ...)


SET @company = '2301'

sonst ist es eher wie mit Äpfeln und Birnen...

Warum gibt es hier so extreme Unterschiede?
Nach meinem Verstàndnis sollte es eigentlich gleich sein,
die Ausführungsplàne sind jedoch total unterschiedlich.


Ohne die Ausführungsplàne kann es imho der SELECT for die @company
Variable sein.


mfG

Ähnliche fragen