T-SQL Ninja #07

OUTER APPLY

Was tut OUTER APPLY? OUTER APPY ist ein Mittel, das euch zunächst einmal die Möglichkeit gibt, Unterabfragen zu formulieren, die für jede Zeile im Ergebnis ausgeführt wird und dann an das Ergebnis gejoint wird. Damit ist es natürlich auch ein Mittel, das mit höchster Vorsicht zu genießen ist, denn da ein OUTER APPLY für jede […]

T-SQL Ninja #06

OFFSET FETCH

Was tut OFFSET FETCH? Fast jeder limitiert seine Abfrage-Ergebnisse durch Hinzufügen von TOP. Aber was ist, wenn meine Anwendung nun nicht die ersten 1000 Datensätze abfragen möchte, sondern immer zehner-Blöcke, um diese beispielsweise in Seiten sortiert anzuzeigen? Dafür gibt es seit dem SQL Server 2012 OFFSET FETCH. Wie könnt ihr OFFSET FETCH verwenden? Um die […]

T-SQL Ninja #05

Optimizer Hints

Was sind Optimizer Hints? Normalerweise wird der SQL Server, wenn ihr eine Abfrage abschickt versuchen, diese Abfrage zu interpretieren und basierend unter anderem auf Statistiken einen möglichst guten Ausführungsplan für eure Abfrage zu finden. Im Normalfall klappt das meistens auch sehr gut. Gelegentlich gibt es aber Fälle, wo der SQL Server sich verschätzt, sei es […]

T-SQL Ninja #04

SELECT FOR JSON

Was tut SELECT FOR JSON? In nahezu jeder neuen Web-Anwendungen ist JSON das Dateiformat für Datenaustausch. JSON ist lesbar, übersichtlicher als beispielsweise XML und hat kleinere Datenmengen, deshalb findet es zunehmend Verbreitung in der Web-Welt. JSON steht für JavaScript Object Notation. Nun hat – ähnlich wie das früher mit SELECT FOR XML ging – Microsoft […]

T-SQL Ninja #03

TRY CATCH

Was ist try-catch? Wer von euch programmiert, der kennt try–catch-Blöcke zur Behandlung von Ausnahmen. Konstrukte wie dieses durch die man im Code nicht einfach auf Fehler läuft und den Code abbricht, sondern auf Ausnahmen reagieren kann, sind in der Programmier-Welt zwar alltäglich, im SQL-Standard jedoch nicht vorgesehen. Wofür könnt ihr try-catch verwenden? Try–catch-Blöcke sind genau wie […]

T-SQL Ninja #02

NOLOCK

Was ist NOLOCK? NOLOCK ist ein sogenannter Abfragehinweis, mit dem ihr das Standardverhalten des SQL Server für eure Abfrage überschreiben oder verändern könnt. NOLOCK ist ein Hinweis, der das Isolationslevel für die entsprechende Abfrage überschreibt. Das funktioniert nur für lesende Abfragen, ihr könnt den NOLOCK-Hint also nicht in UPDATE, DELETE oder INSERT-Statements verwenden. Der NOLOCK-Hinweis […]

T-SQL Ninja #01

CTEs

Was sind CTEs? CTE ist die Abkürzung für “Common Table Expression”. Ihr könnt sie euch vorstellen wie ein benanntes Zwischenergebnis, auf das ihr in eurer Abfrage immer wieder zugreifen könnt. Wichtig dabei ist, dass eine CTE eine Tabelle definiert und dass in dieser Tabelle alle Spalten benannt sein müssen. Die CTE enthält also ein SELECT-Statement, […]