Die Lösung des gordischen Knotens: T-SQL objektorientiert UND schnell

Programmierern aus der Welt der objektorientierten oder prozeduralen Sprachen dürfte es beim Blick in so manche Microsoft-SQL-Datenbank die Haare zu Berge stehen lassen. Die gleiche Programmlogik wird häufig immer und immer wieder geschrieben und dies an verschiedensten Stellen in der Datenbank. Das ist umso erstaunlicher, weil es bereits seit der SQL-Server-Version 2005 sogenannte benutzerdefinierte Funktionen gibt, die genau dies verhindern sollen. Warum also werden diese nicht verwendet? Die Ursache ist ihre teilweise katastrophale Performance. Nutzt man diese Skalarwertfunktionen zur Zentralisierung des Quellcodes muss man wohl oder übel ein schlechtes Laufzeitverhalten in Kauf nehmen. Von daher hat man die Wahl zwischen Pest oder Cholera – saubere Architektur oder gute Performance.
Zum Glück ist aber auch die Datenbankwelt nicht ganz so schlecht wie es auf den ersten Blick scheint. Mit ein paar wenigen Handgriffen kann man tatsächlich den Quellcode zentralisieren und das bei sehr gutem Laufzeitverhalten. Wie das geht? Einfach weiterlesen… weiterlesen…

ParentChild-Tabellen ‚flachklopfen‘ – Cross Apply

In diesem Beitrag stelle ich Ihnen die Verwendung von CROSS und OUTER APPLY vor. Seit SQL Server 2005 existiert der Apply Operator und ist in der Tat eine tolle Erweiterung in T-SQL.
Sollten Sie die Hilfe von SQL Server zur Rate ziehen, wird es im ersten Blick nicht ganz deutlich, was der Apply Operator denn wirklich für einen Vorteil bringt. Dort heißt es wörtlich:
“Der APPLY-Operator ermöglicht Ihnen das Aufrufen einer Tabellenwertfunktion für sämtliche Zeilen, die von einem äußeren Ausdruck einer Tabelle einer Abfrage zurückgegeben werden. Die Tabellenwertfunktion dient als rechte Eingabe, der äußere /Ausdruck der Tabelle agiert als linke Eingabe. Die rechte Eingabe wird für jede Zeile aus der linken Eingabe ausgewertet, und die erstellten Zeilen werden für die endgültige Ausgabe kombiniert. Bei der Liste der vom APPLY-Operator erstellten Spalten handelt es sich um den Satz von Spalten in der linken Eingabe, gefolgt von der Liste der von der rechten Eingabe zurückgegebenen Spalten.”
In dieser Veröffentlichung stelle ich Ihnen einer der Möglichkeiten der Nutzung von APPLY vor und zwar in meinen Augen das meistbenutzte Szenarium. weiterlesen…