Die Referenz in der Microsoft Dokumentation: http://technet.microsoft.com/de-de/library/ms191158.aspx
Index- und Tabellenzugriffe
Die Operationsnamen folgen bei SQL Server einem einfachen Schema. Alle „Scan“-Operationen lesen den gesamten Index oder die gesamte Tabelle. Die „Seek“-Operationen benutzen den Index-Baum oder die physikalische Adresse (RID, wie die Oracle ROWID), um auf einen Bereich gezielt zuzugreifen.
- Index Seek, Clustered Index Seek
- Die Operation - Index Seekdurchwandert den Indexbaum und folgt anschließend der Blattknoten-Liste, um alle Treffer zu finden (analog zu einem- INDEX RANGE SCANin der Oracle Datenbank). Siehe Kapitel 1, „Anatomie eines SQL Indexes“.- Die sogenannten Index-Filterprädikate sind ein häufiges Performanceproblem bei der - Index Seek-Operation. „SQL Server Zugriffs- und Filterprädikate unterscheiden“ erklärt, wie man sie identifiziert.
- Index Scan, Clustered Index Scan
- Liest den ganzen Index – alle Zeilen – in der Index-Reihenfolge. Diese Operation kann zum Beispiel dann benutzt werden, wenn alle Zeilen in der entsprechenden Reihenfolge benötigt werden – z. B., weil die - order by-Klausel der Indexdefinition entspricht. Siehe Kapitel 6, „Sortieren und Gruppieren“.
- Key Lookup (Clustered)
- Lädt eine Zeile aus einem Clustered-Index. Ähnlich einem - INDEX UNIQUE SCANauf einer Index-Organized-Table (IOT) bei der Oracle Datenbank. Siehe auch Kapitel 5, „Daten-Cluster: Die zweite Macht der Indizierung“.
- RID Lookup (Heap)
- Lädt eine Tabellenzeile anhand der - RIDaus einer vorangegangenen Index-Operation. Ähnlich der Operation- TABLE ACCESS BY INDEX ROWIDbei der Oracle Datenbank. Siehe Kapitel 1, „Anatomie eines SQL Indexes“.
- Table Scan
- Liest die ganze Tabelle – alle Zeilen – wie gespeichert. Das heißt, in „zufälliger“ Reihenfolge. Obwohl die Blöcke nicht einzeln, sondern mehrere auf einmal gelesen werden, gehört der - Table Scanzu den teuersten Operationen überhaupt. Neben der Last am Speichersystem ist er auch sehr CPU-intensiv, da alle Tabellenzeilen gegen die- where-Klausel geprüft werden müssen. Analog zu- TABLE ACCESS FULLbei der Oracle Datenbank. Siehe „Full-Table-Scan“.
Wenn du diese Seite magst, magst du vielleicht auch …
… meine Newsletter bestellen, gratis Sticker erhalten, mein Buch kaufen oder an einer Schulung teilnehmen.
Join-Operationen
Join-Operationen verbinden grundsätzlich nur zwei Tabellen auf einmal. Falls mehrere Join-Operationen in einer Abfrage vorkommen, werden sie schrittweise durchgeführt; zuerst zwei Tabellen, dann das Zwischenergebnis mit der nächsten. Insofern kann der Begriff „Tabelle“ im Folgenden auch ein Zwischenergebnis bezeichnen.
- Nested Loops
- Verbindet zwei Tabellen, indem es für jede Zeile aus der ersten Tabelle eine Abfrage auf die zweite macht. SQL Server nutzt den Nested-Loops Join auch für den Tabellenzugriff nach einem Indexzugriff. Siehe „Nested Loops – verschachtelte Schleifen“. 
- Hash Match
- Ein Hash-Join lädt die möglicherweise passenden Zeilen aus der einen Tabelle in ein assoziatives Array (Hash-Table), das dann für jede Zeile der zweiten Tabelle abgefragt wird. Siehe „Hash-Join“. 
- Merge Join
- Der Merge-Join verbindet zwei Tabellen wie ein Reißverschluss. Beide Tabellen müssen vorsortiert sein. Siehe „Sort-Merge“. 
Sortieren und Gruppieren
- Sort
- Sortiert das Ergebnis entsprechend der - order by-Klausel. Diese Operation benötigt Speicher, um das Ergebnis zwischenzuspeichern (keine pipelined execution). Siehe auch „- ORDER BYindizieren“.
- Sort (Top N Sort)
- Sortiert ein Teilergebnis entsprechend der - order by-Klausel. Diese Operation wird für Top-N-Abfragen genutzt, die nicht „am Fließband“ ausgeführt werden können. Siehe „Top-N-Zeilen abfragen“.
- Stream Aggregate
- Gruppiert ein vorsortiertes Ergebnis entsprechend der - group by-Klausel. Die Ausführung erfolgt „am Fließband“. Falls der Operation aber ein- Sortvorausgeht, erfolgt dieses nicht „am Fließband“. Siehe „- GROUP BYindizieren“.
- Hash Match (Aggregate)
- Führt eine Gruppierung mit einer Hash-Tabelle durch. Diese Operation benötigt Speicher zum Materialisieren des Zwischenergebnisses (keine Ausführung „am Fließband“). Die Ausgabe erfolgt in keiner bestimmten Reihenfolge. Siehe „ - GROUP BYindizieren“.
Top-N-Abfragen
- Top
- Bricht die Ausführung ab, sobald die gewünschte Anzahl an Zeilen gefunden wurde. Siehe „Top-N-Zeilen abfragen“. - Die Effizienz einer Top-N-Abfrage hängt vom den abgebrochenen Operationen ab. Es ist sehr ineffizient, Operationen abzubrechen, die nicht „am Fließband“ ausgeführt werden (z. B. - Sort).

