ich verwende ZEOS Komponenten zum Zugriff auf eine MSSQL DB.
Folgende Merkwürdigkeit, die ich mir nicht erklären kann, hier nur ein Auszug aus dem SQL, welches Probleme bereitet:
JDVON, JDBIS sind Juliandates (Integer), MCU ist ein Stringfeld fester Länge(12)
Code: Alles auswählen
DECLARE @JDVON AS INTEGER = 125001
DECLARE @JDBIS As INTEGER = 125031
DECLARE @MCU As NVARCHAR(12) = ' 40912000'
......
WHERE (1=1)
AND (WADCTO = 'WM')
AND (CD.CDITM = 76000011)
AND ( (MS.FWPNST >= @JDVON) AND (MS.FWPNST <= @JDBIS)
OR ( (MSEXT.PLANSTATUS = 1) AND (MSEXT.PLANDATUM >= @JDVON) AND (MSEXT.PLANDATUM <= @JDBIS) ) )
AND (WOMF.WASRST < '60')
AND (WOMF.WAMCU = ' 40912000' )
--AND (WOMF.WAMCU = @MCU )
ORDER BY ORT , PLZ
Wenn ich aber statt der Konstanten diese Zeile aktiviere "AND (WOMF.WAMCU = @MCU )", wo der Vergleichswert aus einer Variablen geholt werden muss,
dann benötigt die Ausführung fett 45 Sekunden. Es wird die gleiche, korrekte Ergebnismenge geliefert.
Hat jemand dafür eine plausible Erklärung?
Ich bin für jeden Hinweis dankbar.
Ich denke mal nicht, dass das etwas mit ZEOS zu tun hat, wenn ich das im MSSMS ausführe, verhält es sich ebenso merkwürdig.