Es geht darum, ich habe eine View die eine SP aufruft die Entweder Daten neu berechnet oder aus einer Gespeicherten liste zulinkt.
die Sp gibt mir 12 Feldinformationen wieder zurück.
da ich in einer View eine SP nur per (Select XXX from YYY()) aufrufen kann wurde ich das gerne abkürzen.
bsp:
SQL-Code:
Create View Artikel
Select ArtikelNr,
Bez,
(Select LagerBestand from SP(A.PIX)),
(Select Lagerwert from SP(A.PIX)),
(Select Bestellt from SP(A.PIX)),
(Select Bestelltwert from SP(A.PIX)),
.....
from Artikel
in der SP wird entschieden,
1. Wenn der Artikel Bearbeitet wurde -->
JA --> Dann Lagerwerte neu Berechnen
Nein --> sonst letzte gespeicherten Lagerwerte anzeigen (hiert wird eine weitere Tabelle gelesen)
und jetzt wollte ich die SP so umbauen, dann wenn nur die letzten werte geladen werden sollen dann per
SQL-Code:
Create View Artikel
Select ArtikelNr,
Bez,
iif(LetzteDatenanzeigen = 1, L.Lagerbestand,(Select LagerBestand from SP(A.PIX)))
iif(LetzteDatenanzeigen = 1, L.LagerWert,(Select LagerBestand from SP(A.PIX)))
iif(LetzteDatenanzeigen = 1, L.Bestellt,(Select LagerBestand from SP(A.PIX)))
iif(LetzteDatenanzeigen = 1, L.Bestellwert,(Select LagerBestand from SP(A.PIX)))
.....
from Artikel
iif(LetzteDatenanzeigen = 1, Left outer join Lageranzeige))
Über dieses Konstrukt würde ich statt 12 mal 2 Lesevorgänge nur einen lesevorgang benötigen
--> Das Ganze auf 400.000 - 500.000 Daten gibt das schon einiges anzeitersparniss