Gibt's da eigentlich so tipps, was von der Performance besser ist? Die Anwendung einer Funktion in jedem Datensatz oder einfach nur drei Abfragen mit Union oder Subselects hintereinander?
[/
OT]
Wahrscheinlich eine Frage des Mengengerüsts (Selektivität) und der Indizierung (Index könnte bei einem Kontoschlüssel gegeben sein)
Die einzelnen Unionabfrage erfordern 3 Zugriffe auf die Gesamtmenge oder eben indizierte Zugriffe.
Ein Einzelstatement mit Iif / Case dürfte auch ohne Index ganz gut abschneiden, wenn die Gesamtmenge nicht viel größer ist als die Menge der 3 Konten.
Wenn sich der Optimizer aufgrund Indizierung und Statistiken zu einem Fullscan durchringt, ist es mit Iif / Case ein einmalige Fullscan, bei dem alle 3 Fälle abgefragt werden, mit Union 3 Fullscans für 3 Konten.
So ungefähr.
Die Nutzung der Funktion spielt dabei m.E. kaum eine Rolle (das ist quasi billiges Kopfrechnen für das System) gegenüber den reinen Zugriffskosten (auf Festplatte). Kleine Gesamtmenge/ alles bereits im -hinreichend großen- Buffer oder schnell bzw überhaupt dort rein zu bekommen oder Datenhaltung auf SSD können es wieder anders aussehen lassen. Aber dann spielt es vermutlich so oder so kaum eine Rolle.