T-SQL Ninja #14

GROUP BY … HAVING

Was ist GROUP BY? GROUP BY und HAVING gehören zu den absoluten Grundlagen der SQL Syntax, doch jeder Ninja sollte auch die Grundlagen beherrschen und sich nicht nur mit Jutsu beschäftigen, daher wollen wir uns das Konstrukt einmal ansehen. Eine Abfrage, die Daten aggregiert, indem sie beispielsweise eine Summe bildet, muss nicht immer die Summe über alle Zeilen […]

T-SQL Ninja #13

DENSE_RANK

Was ist DENSE_RANK? In den letzten beiden Wochen haben wir euch bereits mit dem Durchnummerieren von Zeilen der Ergebnismenge mit den ROW_NUMBER und RANK-Funktionen „Freude“ bereitet. Damit wollen wir auch heute noch fortfahren. Die DENSE_RANK-Funktion ist, wie es der Name schon andeutet, eng mit der RANK-Funktion aus der letzten Woche verbunden. Was ist also der Unterschied? Das ist relativ einfach […]

T-SQL Ninja #12

RANK

Was tut RANK? Wie schon die in der letzten Woche vorgestellte ROW_NUMBER Funktion, ist auch RANK eine Window Function, also eine Funktion, die die Daten sortiert in sogenannten „Fenstern“ oder „Partitionen“ abarbeitet. Die Sortierung und die Partitionen definiert ihr, indem ihr nach dem Funktionsaufruf die Schlüsselworte ORDER BY und PARTITION BY verwendet. Die RANK-Funktion nummeriert dann alle Zeilen in der Ergebnismenge, anfangend […]

T-SQL Ninja #11

ROW_NUMBER

Was ist ROW_NUMBER? Die ROW_NUMBER Funktion ist eine Window Function, also eine Funktion, die die Daten sortiert in sogenannten „Fenstern“ oder „Partitionen“ abarbeitet. Die Sortierung und die Partitionen definiert ihr, indem ihr nach dem Funktionsaufruf die Schlüsselworte ORDER BY und PARTITION BY verwendet. Die ROW_NUMBER-Funktion nummeriert dann alle Zeilen in der Ergebnismenge, anfangend bei 1 […]

T-SQL Ninja #10

STATISTICS TIME

Was ist STATISTICS TIME? In der letzten Woche hattet Ihr Statistics IO kennengelernt, ein Hilfsmittel, das euch verrät, wie viele Daten eine Abfrage von der Festplatte lesen muss, um eine Abfrage zu beantworten. Wie unterscheidet sich nun Statistics Time von Statistics IO? Während Statistics IO die Festplattenzugriffe protokolliert, liefert Statistics Time die benötigte CPU Zeit […]

T-SQL Ninja #09

STATISTICS IO

Was tut STATISTICS IO? „Duuuhuuu, Ninja, ich hab da so ne Abfrage, die ist total langsam, gestern war das noch nicht so, ganz sicher“. Mit Anfragen wie dieser wird jeder Ninja früher oder später überrascht und das beweist, dass auch die anderen User gewisse Ninja-Skills haben, denn auf diese Situation vorbereitet ist man mit Sicherheit […]

T-SQL Ninja #08

sp_MSforeachtable

Was ist sp_MSforeachtable? Die gespeicherte Prozedur sp_MSforeachtable gehört zu den Systemprozeduren, die im SQL Server definiert sind. Ihr findet sie, wenn ihr euch mit dem Management Studio oder dem Data Studio mit einem Server verbindet und dann unter „System Databases“ in der „master“-Datenbank unter „Programmability“ in die „System Stored Procedures“ schaut. Dort findet ihr einen ganzen Haufen […]

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 […]