Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: If Clausel im Select

  Alt 17. Jun 2014, 20:26
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.
Gruß, Jo
  Mit Zitat antworten Zitat