Ich habe das:
SELECT
A
,B
,dbo.Func(C)
,dbo.Func(D)
,dbo.Func(E)
,F
FROM abcdef
WHERE
0 = dbo.Func(C) + dbo.Func(D)
Ich habe gelesen, dass dies keine gute Praxis ist, da die Funktion millionenfach aufgerufen wird und sich negativ auf die Leistung auswirkt.
Ich habe versucht, es mit CROSS APPLY neu zu schreiben:
SELECT *
FROM abcdef
CROSS APPLY dbo.Func(D) as FD
aber es gibt diesen Fehler zurück:
Invalid object name 'dbo.Func'
Kann ich CROSS APPLY nur für TABLE VALUED-Funktionen verwenden?
Und ist CROSS APPLY überhaupt für Skalarfunktionen (konvertiert in Tabellenwertfunktionen) geeignet? Denn bei meinem kleinen Leistungstest ist CROSS APPLY etwas langsamer.
quelle
SELECT ca.Fc, ca.Fc + ca.Fd