Hallo,
ich habe eine Abfrage, die mir Artikeldaten in Abhängigkeit
davon zurückgibt, ob die Variable v_artikelnummer einen Wert enthält oder nicht.
Wenn die Variable leer ist, sollen alle Artikel angezeigt werden,
ansonsten soll gefiltert werden.
Ich habe vereinfacht dargestellt folgenden Lösungsansatz ausprobiert:
select * from artikel
where ((v_artikelnummer is not null and artikelnummer = v_artikelnummer)
or v_artikelnummer is null);
Das Problem ist nur, die Abfrage ist deutlich langsamer wie diese: (5Sek. zu 0.02Sek.)
select * from artikel
where artikelnummer = v_artikelnummer;
Das heißt, ich muss das SQL ggf. doch als Zeichenkette zusammenbauen, und mit execute immediate ausführen.
Das will ich eigentlich verhindern, da das gesamte SQL sehr umfangreich ist.
Was mich interessiert, wieso ist das SQL soviel langsamer? Fallen euch andere Lösungsansätze ein?
Ich arbeite mit Orace 9.
Danke im voraus.