Freigeben über


Referenz zu logischen und physischen Showplanoperatoren

Operatoren beschreiben, wie eine Abfrage oder eine DML-Anweisung (Data Manipulation Language) in SQL Server ausgeführt wird. Der Abfrageoptimierer verwendet Operatoren, um einen Abfrageplan für das in der Abfrage angegebene Ergebnis zu erstellen, oder zum Ausführen des in der DML-Anweisung angegebenen Vorgangs. Der Abfrageplan ist eine Struktur, die aus physischen Operatoren besteht. Sie können den Abfrageplan mit den SET SHOWPLAN-Anweisungen, den grafischen Ausführungsplanoptionen in SQL Server Management Studio, oder den SQL Server Profiler Showplan-Ereignisklassen anzeigen.

Operatoren werden als logische und physische Operatoren klassifiziert.

Logische Operatoren
Logische Operatoren beschreiben den relationalen algebraischen Vorgang, der für die Anweisungsverarbeitung verwendet wird. Mit anderen Worten, logische Operatoren beschreiben konzeptionell den auszuführenden Vorgang.

Physische Operatoren
Physische Operatoren implementieren den durch logische Operatoren beschriebenen Vorgang. Jeder physische Operator ist ein Objekt oder eine Routine, das bzw. die einen Vorgang ausführt. Einige Operatoren greifen z. B. auf Spalten oder Zeilen einer Tabelle, eines Index oder einer Sicht zu. Andere physische Operatoren führen andere Vorgänge aus, z. B. Berechnungen, Aggregationen, Datenintegritätsprüfungen oder Joins. Physischen Operatoren sind Kosten zugeordnet.

Über die physischen Operatoren werden Daten initialisiert, aufgelistet und beendet. Der physische Operator kann insbesondere die folgenden drei Methodenaufrufe beantworten:

  • Init(): Mit der Methode Init() wird ein physischer Operator initialisiert und dazu angewiesen, erforderliche Datenstrukturen einzurichten. Der physische Operator kann mehrere Init() -Aufrufe empfangen; in der Regel empfängt er jedoch nur einen.

  • GetNext(): Mit der Methode GetNext() wird ein Operator angewiesen, die erste oder nächste Datenzeile abzurufen. Der physische Operator kann null oder mehrere GetNext() -Aufrufe empfangen.

  • Close(): Mit der Methode Close() wird der physische Operator dazu angewiesen, einige Cleanupvorgänge auszuführen und sich selbst zu beenden. Ein physischer Operator empfängt nur einen Close() -Aufruf.

Die GetNext()-Methode gibt eine Datenzeile zurück, und die Anzahl der Aufrufe wird als ActualRows in der durch SET STATISTICS PROFILE ON oder SET STATISTICS XML ON erstellten Showplanausgabe angezeigt. Weitere Informationen zu diesen SET-Optionen finden Sie unter SET STATISTICS PROFILE (Transact-SQL) und SET STATISTICS XML (Transact-SQL).

Die ActualRebinds- und ActualRewinds-Zähler, die in der Showplanausgabe angezeigt werden, beziehen sich auf die Anzahl der Aufrufe der Init() -Methode. ActualRebinds entspricht 1 und ActualRewinds entspricht 0, es sei denn, ein Operator befindet sich innerhalb eines Schleifenjoins. Wenn sich ein Operator innerhalb eines Schleifenjoins befindet, muss die Summe der erneuten Bindungen und Zurückspulvorgänge der Anzahl der verarbeiteten Vorgänge außerhalb des Joins entsprechen. Unter 'erneuter Bindung' wird verstanden, dass sich mindestens ein korrelierter Parameter des Joins geändert hat und daher das Innere des Joins neu ausgewertet werden muss. Unter 'Zurückspulvorgang' wird verstanden, dass sich keiner der korrelierten Parameter geändert hat und das vorherige innere Resultset daher wiederverwendet werden kann.

ActualRebinds und ActualRewinds sind in der mithilfe von SET STATISTICS XML ON erstellten XML-Showplanausgabe vorhanden. Sie werden nur für die Operatoren Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool und Table-valued Function aufgefüllt. ActualRebinds und ActualRewinds können auch für die Assert Operatoren und Filter aufgefüllt werden, wenn das StartupExpression-Attribut auf TRUE festgelegt ist.

Wenn ActualRebinds und ActualRewinds in einem XML-Showplan vorhanden sind, können sie mit EstimateRebinds und EstimateRewindsverglichen werden. Wenn sie nicht vorhanden sind, kann die geschätzte Zeilenanzahl (EstimateRows) mit der tatsächlichen Zeilenanzahl (ActualRows) verglichen werden. Beachten Sie, dass die tatsächliche grafische Showplanausgabe für tatsächliche erneute Bindungen und Zurückspulvorgänge Nullen anzeigt, wenn letztere nicht vorhanden sind.

Ein entsprechender Zähler, ActualEndOfScans, ist verfügbar, wenn die Showplanausgabe mithilfe von SET STATISTICS XML ON erstellt wird. Wenn ein physischer Operator das Ende seines Datenstroms erreicht, wird dieser Zähler um 1 erhöht. Wenn ein physischer Operator das Ende seines Datenstroms erreicht, wird dieser Zähler um 1 erhöht. Wie bei erneuten Bindungen und Zurückspulvorgängen kann die Anzahl für das Scanende größer als 1 sein; aber nur, wenn sich der Operator innerhalb eines Schleifenjoins befindet. Die Anzahl für Scanende muss kleiner oder gleich der Summe der erneuten Bindungen und Zurückspulvorgänge sein.

Zuordnen von physischen und logischen Operatoren

Der Abfrageoptimierer erstellt einen Abfrageplan als Struktur, die aus logischen Operatoren besteht. Nach dem Erstellen des Abfrageplans wählt der Abfrageoptimierer für jeden logischen Operator den effizientesten physischen Operator aus. Der Abfrageoptimierer entscheidet auf Basis der Kosten, welcher physischer Operator einen logischen Operator implementieren soll.

Normalerweise kann ein logischer Vorgang von mehreren physischen Operatoren implementiert werden. Ein physischer Operator kann jedoch in seltenen Fällen mehrere logische Vorgänge implementieren.

Beschreibung der Operatoren

In diesem Abschnitt finden Sie Beschreibungen der logischen und physischen Operatoren.

Symbol für grafischen Ausführungsplan Showplanoperator BESCHREIBUNG
Keine Aggregate Mit dem Aggregate-Operator wird ein Ausdruck berechnet, der MIN, MAX, SUM, COUNT oder AVG enthält. Der Aggregate-Operator kann ein logischer oder physischer Operator sein.
für arithmetischen Ausdruck Symbol SymbolOperator für Operator für Arithmetic Expression Der Arithmetic Expression-Operator berechnet einen neuen Wert anhand vorhandener Werte in einer Zeile. Arithmetic Expressionwird in SQL Server 2014 nicht verwendet.
Symbol Assert Der Assert-Operator überprüft eine Bedingung. Beispielsweise überprüft er die referenzielle Integrität, oder er stellt sicher, dass eine skalare Unterabfrage eine Zeile zurückgibt. Für jede Eingabezeile wertet der Assert Operator den Ausdruck in der Argument Spalte des Ausführungsplans aus. Wird der Ausdruck mit NULL ausgewertet, so wird die Zeile an den Assert-Operator übergeben, und die Ausführung der Abfrage wird fortgesetzt. Wird dieser Ausdruck zu einem Nicht-NULL-Wert ausgewertet, so wird der entsprechende Fehler ausgelöst. Der Assert-Operator ist ein physischer Operator.
Symbol symbol " Assign Der Assign-Operator weist einer Variablen den Wert eines Ausdrucks oder einer Konstanten zu. Assign ist ein Sprachelement.
Keine Asnyc Concat Der Asnyc Concat-Operator wird nur in Remoteabfragen (verteilten Abfragen) verwendet. Diese Anweisung weist n untergeordnete Knoten und einen übergeordneten Knoten auf. Gewöhnlich sind manche untergeordnete Knoten Remotecomputer, die an einer verteilten Abfrage beteiligt sind. Asnyc Concat gibt open()-Aufrufe für alle untergeordneten Knoten gleichzeitig aus und wendet dann auf jeden untergeordneten Knoten eine Bitmap an. Für jedes Bit, das 1 ist, sendet Async Concat auf Anfrage die Ausgabezeilen an den übergeordneten Knoten.
Bitmapoperatorsymbol Bitmap SQL Server verwendet den Bitmap Operator, um Bitmapfilterung in parallelen Abfrageplänen zu implementieren. Bitmapfilterung beschleunigt die Abfrageausführung, indem Zeilen mit Schlüsselwerten entfernt werden, die keine Joindatensätze erzeugen können, bevor Zeilen über einen anderen Operator wie den Parallelism Operator übergeben werden. Ein Bitmapfilter verwendet eine kompakte Darstellung einer Gruppe von Werten aus einer Tabelle in einem Bereich der Operatorstruktur, um Zeilen aus einer zweiten Tabelle in einem anderen Bereich der Struktur zu filtern. Durch das Entfernen unnötiger Zeilen zu einem frühen Zeitpunkt in der Abfrage müssen nachfolgende Operatoren weniger Zeilen verarbeiten, wodurch eine Steigerung der Gesamtleistung der Abfrage erzielt werden kann. Der Optimierer bestimmt, wann eine Bitmap eine ausreichende Selektivität aufweist, damit sie verwendet werden kann, und in welchen Operatoren der Filter angewendet wird. Bitmap ist ein physischer Operator.
Bitmapoperatorsymbol Bitmap Create Der Bitmap Create-Operator wird in der Showplanausgabe dort angezeigt, wo Bitmaps erstellt werden. Bitmap Create ist ein logischer Operator.
Symbol symbol Bookmark Lookup Der Bookmark Lookup-Operator verwendet ein Lesezeichen (Zeilen-ID oder Gruppierungsschlüssel), um die zugehörige Zeile in der Tabelle oder im gruppierten Index nachzuschlagen. Die Argument Spalte enthält die Lesezeichenbeschriftung, die zum Suchen der Zeile in der Tabelle oder dem gruppierten Index verwendet wird. Die Argument Spalte enthält auch den Namen der Tabelle oder des gruppierten Indexes, in dem die Zeile gesucht wird. Wenn die WITH PREFETCH-Klausel in der Argument Spalte angezeigt wird, hat der Abfrageprozessor festgestellt, dass es optimal ist, beim Suchen von Lesezeichen in der Tabelle oder dem gruppierten Index asynchrones Prefetching (Read-Ahead) zu verwenden.

Bookmark Lookupwird in SQL Server 2014 nicht verwendet. Clustered Index Seek und RID Lookup stellen hingegen Suchfunktionen für Lesezeichen bereit. Auch der Key Lookup-Operator stellt diese Funktionalität bereit.
Keine Branch Repartition Ein paralleler Abfrageplan kann mitunter logische Bereiche von Iteratoren enthalten. Alle Iteratoren innerhalb eines solchen Bereichs können durch parallele Threads ausgeführt werden. Die Bereiche selbst müssen seriell ausgeführt werden. Einige der Parallelism-Iteratoren innerhalb eines einzelnen Bereichs werden Branch Repartition genannt. Der Parallelism-Iterator an der Grenze zwischen zwei Bereichen wird Segment Repartition genannt. Branch Repartition und Segment Repartition sind logische Operatoren.
Keine Broadcast Broadcast verfügt über einen untergeordneten Knoten und n übergeordnete Knoten. Broadcast sendet die Eingabezeilen bei Bedarf an mehrere Consumer. Jeder Consumer erhält alle Zeilen. Wenn z.B. alle Consumer sich auf der Erstellungsseite eines Hashjoins befinden, werden n Kopien der Hashtabellen erstellt.
Symbol des Buildhashoperators Build Hash Gibt die Erstellung einer Batchhashtabelle für einen speicheroptimierten xVelocity-columnstore-Index an.
Keine Cache Cache ist eine spezialisierte Version des Spool-Operators . Er speichert nur eine Datenzeile. Cache ist ein logischer Operator. Cachewird in SQL Server 2014 nicht verwendet.
Symbol Clustered Index Delete Der Clustered Index Delete-Operator löscht Zeilen aus dem gruppierten Index, der in der Argument-Spalte des Abfrageausführungsplans angegeben ist. Wenn ein WHERE:()-Prädikat in der Argument-Spalte vorhanden ist, werden nur die Zeilen gelöscht, die das Prädikat erfüllen. Clustered Index Delete ist ein physischer Operator.
Symbol Clustered Index Insert Der Clustered Index Insert-Showplanoperator fügt die Eingabezeilen in den gruppierten Index ein, der in der Argument-Spalte angegeben ist. Die Argument-Spalte enthält auch ein SET:()-Prädikat, das den für die einzelnen Spalten festgelegten Wert anzeigt. Wenn Clustered Index Insert keine untergeordneten Elemente für Einfügewerte vorhanden sind, wird die eingefügte Zeile vom Insert Operator selbst übernommen. Clustered Index Insert ist ein physischer Operator.
Zusammenführungsoperator für Clustered Index Merge Der Clustered Index Merge -Operator übernimmt einen Mergedatenstrom für einen gruppierten Index. Der Operator löscht, aktualisiert oder fügt Zeilen aus dem gruppierten Index ein, der in der Argument Spalte des Operators angegeben ist. Der tatsächlich ausgeführte Vorgang hängt vom Laufzeitwert der SPALTE ACTION ab, die in der Argument Spalte des Operators angegeben ist. Clustered Index Merge ist ein physischer Operator.
Symbol des Gruppierten Indexüberprüfungsoperators symbol Clustered Index Scan Der Clustered Index Scan-Operator scannt den gruppierten Index, der in der Argument-Spalte des Abfrageausführungsplans angegeben ist. Wenn ein optionales WHERE:()-Prädikat vorhanden ist, werden nur die Zeilen zurückgegeben, die das Prädikat erfüllen. Wenn die Argument-Spalte die ORDERED-Klausel enthält, hat der Abfrageprozessor angefordert, dass die Ausgabe der Zeilen in der Reihenfolge zurückgegeben wird, in der sie vom gruppierten Index sortiert wurden. Wurde die ORDERED-Klausel nicht angegeben, scannt die Speicher-Engine den Index optimal (wobei die Ausgabe nicht unbedingt sortiert ist). Clustered Index Scan ist ein logischer und physischer Operator.
Symbol für gruppiertes Indexsuchoperatorsymbol Clustered Index Seek Der Clustered Index Seek-Operator verwendet die Suchfunktionen der Indizes, um Zeilen aus einem gruppierten Index abzurufen. Die Argument Spalte enthält den Namen des verwendeten gruppierten Indexes und das SEEK:()-Prädikat. Die Speicher-Engine verarbeitet mit diesem Index nur die Zeilen, die das SEEK:()-Prädikat erfüllen. Es kann auch ein WHERE:()-Prädikat einschließen, das die Speicher-Engine für alle Zeilen auswertet, die das SEEK:()-Prädikat erfüllen. Dies ist jedoch optional, und es werden keine Indizes für diesen Prozess verwendet.

Wenn die Argument Spalte die ORDERED-Klausel enthält, hat der Abfrageprozessor ermittelt, dass die Zeilen in der Reihenfolge zurückgegeben werden müssen, in der der gruppierte Index sie sortiert hat. Wurde die ORDERED-Klausel nicht angegeben, durchsucht die Speicher-Engine den Index optimal (wobei die Ausgabe nicht unbedingt sortiert ist). Die Ausgabe in der ursprünglichen Reihenfolge kann weniger effizient sein als die unsortierte Ausgabe. Bei der Anzeige des LOOKUP-Schlüsselworts, wird ein Bookmark Lookup ausgeführt. In SQL Server 2008 und höheren Versionen bietet der Key Lookup Operator Die Lesezeichensuche. Clustered Index Seek ist ein logischer und physischer Operator.
Symbol symbol für den Aktualisierungsoperator für Clustered Index Update Der Clustered Index Update Operator aktualisiert Eingabezeilen im gruppierten Index, der in der Argument Spalte angegeben ist. Wenn ein WHERE:()-Prädikat vorhanden ist, werden nur die Zeilen aktualisiert, die dieses Prädikat erfüllen. Wenn ein SET:()-Prädikat vorhanden ist, wird jede aktualisierte Spalte auf diesen Wert festgelegt. Wenn ein DEFINE:()-Prädikat vorhanden ist, werden die durch diesen Operator definierten Werte aufgelistet. Auf diese Werte kann in der SET-Klausel oder an anderer Stelle in diesem Operator sowie in dieser Abfrage verwiesen werden. Clustered Index Update ist ein logischer und physischer Operator.
Symbol Collapse Der Collapse-Operator optimiert die Verarbeitung von Aktualisierungen. Eine Aktualisierung kann bei ihrer Ausführung mithilfe des Split-Operators in einen Lösch- und einen Einfügevorgang aufgeteilt werden. Die Argument Spalte enthält eine GROUP BY:()-Klausel, die eine Liste der Schlüsselspalten angibt. Wenn der Abfrageprozessor benachbarte Zeilen erkennt, die dieselben Schlüsselwerte löschen und einfügen, werden diese separaten Vorgänge durch einen einzigen effektiveren Updatevorgang ersetzt. Collapse ist ein logischer und physischer Operator.
Columnstore Index Scan Columnstore Index Scan Der Columnstore Index Scan Operator überprüft den in der Argument Spalte des Abfrageausführungsplans angegebenen Columnstore-Index.
Symbol Compute Scalar Der Compute Scalar Operator wertet einen Ausdruck aus, um einen berechneten Skalarwert zu erzeugen. Dieser kann an den Benutzer zurückgegeben und/oder an anderer Stelle in der Abfrage als Verweis verwendet werden. Ein Beispiel für beide Fälle ist ein Filterprädikat oder Joinprädikat. Compute Scalar ist ein logischer und physischer Operator.

Compute Scalar Operatoren, die in showplans angezeigt werden, die von SET STATISTICS XML generiert werden, enthalten möglicherweise nicht das RunTimeInformation -Element. In grafischen Showplans können Tatsächliche Zeilen, Tatsächlich erneuerte Bindungenund Tatsächliche Zurückspulvorgänge im Fenster Eigenschaften fehlen, wenn die Option Tatsächlichen Ausführungsplan einschließen in SQL Server Management Studioaktiviert wurde. Wenn diese Situation eintritt, bedeutet das, dass diese Operatoren zwar im kompilierten Abfrageplan verwendet wurden, ihre Arbeit jedoch von anderen Operatoren im Laufzeitabfrageplan verrichtet wurde. Beachten Sie außerdem, dass die Anzahl der Ausführungen in der von SET STATISTICS PROFILE generierten Showplanausgabe gleich der Summe der erneuten Bindungen und Zurückspulvorgänge in den von SET STATISTICS XML generierten Showplans ist.
Symbol Concatenation Der Concatenation -Operator scannt mehrere Eingaben und gibt die gescannten Zeilen zurück. Verkettung wird in der Regel verwendet, um das Transact-SQL UNION ALL-Konstrukt zu implementieren. Der physische Operator Concatenation verfügt über mindestens zwei Eingaben und eine Ausgabe. Concatenation kopiert Zeilen aus dem ersten Eingabedatenstrom in den Ausgabedatenstrom und wiederholt diese Operation anschließend für jeden weiteren Eingabedatenstrom. Concatenation ist sowohl ein logischer als auch ein physischer Operator.
Symbol des Konstantenscanoperators Constant Scan Der Constant Scan Operator führt eine oder mehrere konstante Zeilen in eine Abfrage ein. Ein Compute Scalar Operator wird häufig nach einem Constant Scan verwendet, um spalten zu einer Zeile hinzuzufügen, die Constant Scan vom Operator erstellt wird.
Symbol des Convert-Sprachelements (Datenbank-Engine) Convert Der Convert-Operator wandelt einen skalaren Datentyp in einen anderen um. Convert ist ein Sprachelement.
Keine Cross Join Der Cross Join-Operator verknüpft jede Zeile der ersten (oberen) Eingabe mit jeder Zeile der zweiten (unteren) Eingabe. Cross Join ist ein logischer Operator.
Cursor catchall cursor operator icon catchall Das Sammelsymbol wird angezeigt, wenn von der Logik, die grafische Showplans erzeugt, kein geeignetes Symbol für den Iterator gefunden werden kann. Das Sammelsymbol zeigt nicht notwendigerweise eine Fehlerbedingung an. Es gibt drei allgemeine Symbole: blau (für Iteratoren), orange (für Cursor) und grün (für Transact-SQL-Sprachelemente).
Keine Cursor Die logischen und physischen Cursor -Operatoren beschreiben, wie eine Abfrage oder Aktualisierung mit Cursoroperationen ausgeführt wird. Die physischen Operatoren beschreiben den Algorithmus, der für die physische Implementierung der Cursorverarbeitung verwendet wird, wie z. B. Verwenden eines keysetgesteuerten Cursors. Jeder Schritt bei der Ausführung eines Cursors benötigt einen physischen Operator. Die logischen Operatoren beschreiben eine Cursoreigenschaft, z. B. der Cursor ist schreibgeschützt.

Zu den logischen Operatoren zählen Asynchronous, Optimistic, Primary, Read Only, Scroll Locks sowie Secondary und Synchronous.

Zu den physischen Operatoren zählen Dynamic, Fetch Query, Keyset, Population Query, Refresh Query und Snapshot.
Symbol Declare Der Declare Operator ordnet eine lokale Variable im Abfrageplan zu. Declare ist ein Sprachelement.
Operatorsymbol löschen (Datenbank-Engine) Delete Der Delete Operator löscht aus einem Objekt Zeilen, die das optionale Prädikat in der Argument Spalte erfüllen.
Symbol symbol Deleted Scan Der Deleted Scan-Operator scannt die deleted-Tabelle in einem Trigger.
Keine Distinct Mithilfe des Distinct-Operators werden Duplikate aus einem Rowset oder aus einer Sammlung von Werten entfernt. Distinct ist ein logischer Operator.
Keine Distinct Sort Der Distinct Sort logische Operator überprüft die Eingabe, entfernt Duplikate und sortiert nach den Spalten, die im DISTINCT ORDER BY:()-Prädikat der Argument Spalte angegeben sind. Distinct Sort ist ein logischer Operator.
Symbol Distribute Streams Der Distribute Streams -Operator wird nur in parallelen Abfrageplänen verwendet. Der Distribute Streams -Operator nimmt genau einen Eingabedatenstrom von Datensätzen an und erzeugt mehrere Ausgabedatenströme. Inhalt und Format der Datensätze werden nicht geändert. Jeder Datensatz aus dem Eingabedatenstrom wird in genau einem der Ausgabedatenströme angezeigt. Dieser Operator behält die relative Reihenfolge der Eingabedatensätze in den Ausgabedatenströmen bei. In der Regel wird mit einem Hashingverfahren festgelegt, zu welchem Ausgabedatenstrom ein bestimmter Eingabedatensatz gehört.

Wenn die Ausgabe partitioniert ist, enthält die Argument Spalte ein PARTITION COLUMNS:()-Prädikat und die Partitionierungsspalten. Distribute Streams ist ein logischer Operator.
Symbol Dynamic Der Dynamic-Operator verwendet einen Cursor, der alle von anderen vorgenommenen Änderungen wahrnimmt.
Symbol des Spooloperators Eager Spool Der Eager Spool-Operator übernimmt die gesamte Eingabe und speichert jede Zeile in einem ausgeblendeten temporären Objekt, das in der tempdb Datenbank gespeichert ist. Wenn der Operator erneut gewebt wird (z. B. durch einen Nested Loops -Operator), aber keine erneute Bindung erforderlich ist, werden die in einem Gepool zusammengefassten Daten verwendet, anstatt die Eingabe erneut zu scannen. Wenn eine erneute Zuordnung erforderlich ist, werden die gespoolten Daten gelöscht, und das Spoolobjekt wird durch erneutes Scannen der (neu zugeordneten) Eingabe neu erstellt. Der Eager Spool -Operator erstellt seine Spooldatei unverzüglich: Wenn der übergeordnete Operator des Spoolvorgangs die erste Zeile anfordert, verarbeitet der Spool-Operator alle Zeilen aus dem Eingabeoperator und speichert sie im Spool. Eager Spool ist ein logischer Operator.
Symbol Symbol " Fetch Query Der Fetch Query-Operator ruft Zeilen ab, wenn eine Abrufoperation für einen Cursor ausgegeben wird.
Operatorsymbol filter (Datenbank-Engine)"-Operator Filter Der Filter-Operator überprüft die Eingabe und gibt nur die Zeilen zurück, die dem in der Argument Spalte angezeigten Filterausdruck (Prädikat) entsprechen.
Keine Flow Distinct Der logische Operator Flow Distinct scannt die Eingabe und entfernt Duplikate. Während der Distinct Operator alle Eingaben nutzt, bevor eine Ausgabe erzeugt wird, gibt der FlowDistinct-Operator jede Zeile zurück, wenn sie aus der Eingabe abgerufen wird (es sei denn, diese Zeile ist ein Duplikat, in diesem Fall wird sie verworfen).
Keine Full Outer Join Der logische Full Outer Join-Operator gibt alle Zeilen zurück, die das JOIN-Prädikat aus der ersten (oberen) Eingabe, verknüpft mit jeder Zeile aus der zweiten (unteren) Eingabe, erfüllen. Er gibt außerdem die folgenden Zeilen zurück:

– Zeilen aus der ersten Eingabe, für die in der zweiten Eingabe keine Übereinstimmung besteht.

– Zeilen aus der zweiten Eingabe, für die in der ersten Eingabe keine Übereinstimmung besteht.



Eingaben, die keine übereinstimmenden Werte enthalten, werden als NULL-Wert zurückgegeben. Full Outer Join ist ein logischer Operator.
Symbol des Parallelitätsoperators " (Symbol für den sammeln) Gather Streams Der Gather Streams -Operator wird nur in parallelen Abfrageplänen verwendet. Der Gather Streams -Operator verarbeitet mehrere Eingabedatenströme, fasst diese zusammen und erzeugt genau einen Ausgabedatenstrom von Datensätzen. Inhalt und Format der Datensätze werden nicht geändert. Wenn dieser Operator die Reihenfolge beibehalten soll, müssen alle Eingabedatenströme entsprechend geordnet vorliegen. Wenn die Ausgabe sortiert ist, enthält die Argument Spalte ein ORDER BY:()-Prädikat und die Namen der geordneten Spalten. Gather Streams ist ein logischer Operator.
Symbol Hash Match Der Hash Match-Operator erzeugt eine Hashtabelle, indem er für jede Zeile der Erstellungseingabe einen Hashwert berechnet. Ein HASH:()-Prädikat mit einer Liste von Spalten, die zum Erstellen eines Hashwerts verwendet werden, wird in der Argument Spalte angezeigt. Anschließend wird, soweit möglich, für jede Einfügezeile ein Hashwert (mithilfe derselben Hashfunktion) berechnet und in der Hashtabelle nach Übereinstimmungen gesucht. Wenn ein Rest-Prädikat vorhanden ist (identifiziert durch RESIDUAL:() in der Argument Spalte), muss dieses Prädikat auch erfüllt sein, damit Zeilen als Übereinstimmung betrachtet werden. Das Verhalten des Operators hängt von dem auszuführenden logischen Vorgang ab:

Für jeden Join wird die erste (obere) Eingabe verwendet, um die Hashtabelle zu erstellen, und die zweite (untere) Eingabe zum Einfügen in die Hashtabelle. Die Ausgabeübereinstimmungen (oder Nichtübereinstimmungen) werden vom Jointyp bestimmt. Wenn mehrere Joins dieselbe Joinspalte verwenden, werden diese Vorgänge in einem Hashteam gruppiert.

Für die Operatoren Distinct oder Aggregate wird die Eingabe verwendet, um die Hashtabelle zu erstellen (wobei Duplikate entfernt und Aggregatausdrücke berechnet werden). Wenn die Hashtabelle erstellt ist, wird die Tabelle gescannt, und alle Einträge werden ausgegeben.

Für den Union-Operator wird die erste Eingabe verwendet, um die Hashtabelle zu erstellen (wobei Duplikate entfernt werden). Die zweite Eingabe (die keine Duplikate haben darf) wird zum Einfügen in die Hashtabelle verwendet, wobei alle nicht übereinstimmenden Zeilen zurückgegeben werden, anschließend wird die Hashtabelle gescannt, und alle Einträge werden zurückgegeben.



Hash Match ist ein physischer Operator.
If language-Elementsymbol If Der If-Operator führt eine bedingte Verarbeitung basierend auf einem Ausdruck aus. If ist ein Sprachelement.
Keine Inner Join Der logische Inner Join-Operator gibt alle Zeilen zurück, die die Verknüpfung der ersten (oberen) Eingabe mit der zweiten (unteren) Eingabe erfüllen.
Operatorsymbol einfügen (Datenbank-Engine) Insert Der Insert logische Operator fügt jede Zeile aus ihrer Eingabe in das in der Argument Spalte angegebene Objekt ein. Der physische Operator ist entweder der Operator Table Insert, Index Insert oder Clustered Index Insert.
Symbol Inserted Scan Der Inserted Scan -Operator scannt die inserted -Tabelle. Inserted Scan ist sowohl ein logischer als auch ein physischer Operator.
Symbol Intrinsic Der Intrinsic Operator ruft eine interne Transact-SQL-Funktion auf. Intrinsic ist ein Sprachelement.
Iterator catchall operator icon Iterator Das Iterator-Sammelsymbol wird angezeigt, wenn von der Logik, die grafische Showplans erzeugt, kein geeignetes Symbol für den Iterator gefunden werden kann. Das Sammelsymbol zeigt nicht notwendigerweise eine Fehlerbedingung an. Es gibt drei catchall-Symbole: blau (für Iteratoren), orange (für Cursor) und grün (für Transact-SQL-Sprachkonstrukte).
Symbol symbol Key Lookup Der Key Lookup Operator ist eine Lesezeichensuche für eine Tabelle mit einem gruppierten Index. Die Argument Spalte enthält den Namen des gruppierten Indexes und den Clusteringschlüssel, der zum Suchen der Zeile im gruppierten Index verwendet wird. Key Lookup wird immer von einem Nested Loops Operator begleitet. Wenn die WITH PREFETCH-Klausel in der Argument Spalte angezeigt wird, hat der Abfrageprozessor festgestellt, dass es optimal ist, beim Suchen von Lesezeichen im gruppierten Index asynchrones Prefetching (Read-Ahead) zu verwenden.

Die Verwendung eines Key Lookup Operators in einem Abfrageplan gibt an, dass die Abfrage von der Leistungsoptimierung profitieren kann. Beispielsweise kann die Leistung durch Hinzufügen eines abdeckenden Indexes optimiert werden.
Keyset-Cursoroperatorsymbol Keyset Der Keyset-Operator verwendet einen Cursor, für den Aktualisierungen, jedoch keine von anderen vorgenommenen Einfügungen, sichtbar sind.
Catchall-Symbol - Language Element Das Language Element-Sammelsymbol wird angezeigt, wenn von der Logik, die grafische Showplans erzeugt, kein geeignetes Symbol für den Iterator gefunden werden kann. Das Sammelsymbol zeigt nicht notwendigerweise eine Fehlerbedingung an. Es gibt drei catchall-Symbole: blau (für Iteratoren), orange (für Cursor) und grün (für Transact-SQL-Sprachkonstrukte).
Symbol des Spooloperators Lazy Spool Der logische Operator Lazy Spool speichert jede Zeile aus ihrer Eingabe in einem ausgeblendeten temporären Objekt, das in der tempdb Datenbank gespeichert ist. Wenn der Operator erneut gewebt wird (z. B. durch einen Nested Loops -Operator), aber keine erneute Bindung erforderlich ist, werden die in einem Gepool zusammengefassten Daten verwendet, anstatt die Eingabe erneut zu scannen. Wenn eine erneute Zuordnung erforderlich ist, werden die gespoolten Daten gelöscht, und das Spoolobjekt wird durch erneutes Scannen der (neu zugeordneten) Eingabe neu erstellt. Der Lazy Spool -Operator erstellt seine Spooldatei mit Verzögerung. Das bedeutet, dass der Spooloperator jedes Mal, wenn der übergeordnete Operator des Spoolvorgangs eine Zeile anfordert, eine Zeile aus seinem Eingabeoperator erhält und sie im Spool speichert, anstatt alle Zeilen gleichzeitig zu verarbeiten. Lazy Spool ist ein logischer Operator.
Keine Left Anti Semi Join Der Left Anti Semi Join-Operator gibt jede Zeile aus der ersten (oberen) Eingabe zurück, für die keine übereinstimmende Zeile in der zweiten (unteren) Eingabe vorhanden ist. Wenn in der Argument Spalte kein Join-Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile. Left Anti Semi Join ist ein logischer Operator.
Keine Left Outer Join Der Left Outer Join-Operator gibt alle Zeilen zurück, die die Verknüpfung der ersten (oberen) Eingabe mit der zweiten (unteren) Eingabe erfüllen. Er gibt auch alle Zeilen aus der ersten Eingabe zurück, für die keine übereinstimmende Zeile in der zweiten Eingabe vorhanden ist. Die nicht übereinstimmenden Zeilen in der zweiten Eingabe werden als NULL-Werte zurückgegeben. Wenn in der Argument Spalte kein Join-Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile. Left Outer Join ist ein logischer Operator.
Keine Left Semi Join Der Operator Left Semi Join gibt jede Zeile aus der ersten (oberen) Eingabe zurück, für die eine übereinstimmende Zeile in der zweiten (unteren) Eingabe vorhanden ist. Wenn in der Argument Spalte kein Join-Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile. Left Semi Join ist ein logischer Operator.
Protokollzeilenscanoperatorsymbol Log Row Scan Der Log Row Scan-Operator scannt das Transaktionsprotokoll. Log Row Scan ist ein logischer und physischer Operator.
Mergeintervalloperatorsymbol Merge Interval Der Operator Merge Interval führt mehrere (möglicherweise überlappende) Intervalle zusammen, um minimale, nicht überlappende Intervalle zu erzeugen, die anschließend zum Suchen von Indexeinträgen verwendet werden. Dieser Operator wird in der Regel über einem oder Compute Scalar mehreren Operatoren angezeigt Constant Scan , die die Intervalle (dargestellt als Spalten in einer Zeile) erstellen, die dieser Operator zusammenführt. Merge Interval ist ein logischer und physischer Operator.
Merge join operator symbol Merge Merge Join Der Merge Join -Operator führt die logischen Vorgänge „innere Verknüpfung“, „linke äußere Verknüpfung“, „linke Semiverknüpfung“, „linke Antisemiverknüpfung“, „rechte äußere Verknüpfung“, „rechte Semiverknüpfung“, „rechte Antisemiverknüpfung“ und „Vereinigung“ aus.

In der Argument Spalte enthält der Merge Join-Operator ein MERGE:()-Prädikat, wenn der Vorgang einen 1:n-Join ausführt, oder ein MANY-TO-MANY MERGE:()-Prädikat, wenn der Vorgang eine 1:n-Verknüpfung ausführt. Die Argument Spalte enthält auch eine durch Trennzeichen getrennte Liste von Spalten, die zum Ausführen des Vorgangs verwendet werden. Der Merge Join -Operator benötigt zwei Eingaben, die nach den jeweiligen Spalten sortiert sind, möglicherweise durch Einfügen von expliziten Sortiervorgängen in den Abfrageplan. Ein Zusammenführungsjoin ist vor allem effizient, wenn kein expliziter Sortiervorgang erforderlich ist, beispielsweise wenn ein geeigneter B-Struktur-Index in der Datenbank vorhanden ist oder die Datenbank für mehrere Vorgänge, z. B. ein Zusammenführungsjoin und Gruppierung mit Rollup, verwendet werden kann. BeiMerge Join handelt es sich um einen physischen Operator.
Symbol für den Operator für geschachtelte Schleifen Nested Loops Der Nested Loops-Operator führt die logischen Operationen Inner Join, Left Outer Join, Left Semi Join und Left Anti Semi Join aus. Nested Loops-Joins führen für jede Zeile der äußeren Tabelle eine Suche in der inneren Tabelle aus, in der Regel mithilfe eines Indexes. Der Abfrageprozessor legt auf der Grundlage der geschätzten Kosten fest, ob die äußere Eingabe sortiert werden soll, um die Treffsicherheit der Suchvorgänge auf dem Index über die innere Eingabe zu verbessern. Alle Zeilen, die das (optionale) Prädikat in der Argument Spalte erfüllen, werden entsprechend dem ausgeführten logischen Vorgang zurückgegeben. Nested Loops ist ein physischer Operator.
Nicht gruppierter Index Löschoperatorsymbol Nonclustered Index Delete Der Nonclustered Index Delete Operator löscht Eingabezeilen aus dem nicht gruppierten Index, der in der Argument Spalte angegeben ist. Nonclustered Index Delete ist ein physischer Operator.
Nicht gruppiertes Indexeinfügeoperatorsymbol Index Insert Der Index Insert Operator fügt Zeilen aus seiner Eingabe in den nicht gruppierten Index ein, der in der Argument Spalte angegeben ist. Die Argument-Spalte enthält auch ein SET:()-Prädikat, das den für die einzelnen Spalten festgelegten Wert anzeigt. Index Insert ist ein physischer Operator.
Nicht gruppiertes Indexscan-Operatorsymbol Nicht Index Scan Der Index Scan Operator ruft alle Zeilen aus dem nicht gruppierten Index ab, der in der Argument Spalte angegeben ist. Wenn ein optionales WHERE:()-Prädikat in der Argument Spalte angezeigt wird, werden nur die Zeilen zurückgegeben, die dem Prädikat entsprechen. Index Scan ist ein logischer und physischer Operator.
Nicht gruppiertes Indexsucheoperatorsymbol Index Seek Der Index Seek-Operator verwendet die Suchfunktionen der Indizes, um Zeilen aus einem nicht gruppierten Index abzurufen. Die Argument Spalte enthält den Namen des nicht gruppierten Indexes, der verwendet wird. Außerdem enthält sie auch das SEEK:()-Prädikat. Mit diesem Index werden von der Speicher-Engine nur die Zeilen verarbeitet, die das SEEK:()-Prädikat erfüllen. Optional kann ein WHERE:()-Prädikat enthalten sein, das von der Speicher-Engine für alle Zeilen ausgewertet wird, bei denen das SEEK:()-Prädikat erfüllt wird (es werden hierfür keine Indizes verwendet). Wenn die Argument Spalte die ORDERED-Klausel enthält, hat der Abfrageprozessor ermittelt, dass die Zeilen in der Reihenfolge zurückgegeben werden müssen, in der der nicht gruppierte Index sie sortiert hat. Wurde die ORDERED-Klausel nicht angegeben, so durchsucht die Speicher-Engine den Index auf die optimale Art (wobei die Ausgabe nicht unbedingt sortiert ist). Die Ausgabe in der ursprünglichen Reihenfolge kann weniger effizient sein als die unsortierte Ausgabe. Index Seek ist ein logischer und physischer Operator.
Nicht gruppiertes Index-Spooloperatorsymbol Nicht Index Spool Der physische Operator Index-Spool enthält ein SEEK:()-Prädikat in der Argument Spalte. Der Index-Spool-Operator scannt seine Eingabezeilen, platziert eine Kopie jeder Zeile in einer ausgeblendeten Spooldatei (die in der tempdb Datenbank gespeichert und nur für die Lebensdauer der Abfrage vorhanden ist) und erstellt einen nicht gruppierten Index für die Zeilen. Dies ermöglicht es Ihnen, mithilfe der Indexsuchfunktionen nur die Zeilen auszugeben, die das SEEK:()-Prädikat erfüllen. Wenn der Operator erneut aktiviert wird (z. B. durch einen Nested Loops Operator), aber keine Neubindung erforderlich ist, werden die gruppierten Daten verwendet, anstatt die Eingabe erneut zu scannen.
Nicht gruppierter Indexaktualisierungsoperator symbol Nonclustered Index Update Der Nonclustered Index Update physische Operator aktualisiert Zeilen aus seiner Eingabe im nicht gruppierten Index, der in der Argument Spalte angegeben ist. Wenn ein SET:()-Prädikat vorhanden ist, wird jede aktualisierte Spalte auf diesen Wert festgelegt. Nonclustered Index Update ist ein physischer Operator.
Onlineindexeinfügeoperatorsymbol Online Index Insert Der physische Operator Online Index Insert gibt an, dass ein Index online erstellt, geändert oder gelöscht wird. Die zugrunde liegenden Tabellendaten bleiben daher während des Indexvorgangs für Benutzer verfügbar.
Keine Parallelism Der Parallelism Operator führt die logischen Vorgänge zum Verteilen von Datenströmen, zum Sammeln von Datenströmen und zum Neupartitionieren von Datenströmen aus. Die Argument Spalten können ein PARTITION COLUMNS:()-Prädikat mit einer durch Trennzeichen getrennten Liste der partitionierten Spalten enthalten. Die Argument Spalten können auch ein ORDER BY:()-Prädikat enthalten, das die Spalten auflistet, für die die Sortierreihenfolge während der Partitionierung beibehalten werden soll. Parallelism ist ein physischer Operator.

Hinweis: Wenn eine Abfrage als parallele Abfrage kompiliert wurde, aber zur Laufzeit als serielle Abfrage ausgeführt wird, enthält die von SET STATISTICS XML oder mithilfe der Option Tatsächlichen Ausführungsplan einschließen in SQL Server Management Studio generierte Showplan-Ausgabe kein RunTimeInformation Element für den Parallelism Operator. In der SET STATISTICS PROFILE-Ausgabe werden die tatsächlichen Zeilenanzahlen und die tatsächliche Anzahl der Ausgeführten Nullen für den Parallelism Operator angezeigt. Wenn eine Bedingung auftritt, bedeutet dies, dass der Parallelism Operator nur während der Abfragekompilierung und nicht im Laufzeitabfrageplan verwendet wurde. Beachten Sie, dass parallele Abfragepläne mitunter seriell ausgeführt werden, wenn der Server stark ausgelastet ist.
Parametertabellen-Scanoperatorsymbol Parameter Table Scan Der Parameter Table Scan-Operator scannt eine Tabelle, die als Parameter in der aktuellen Abfrage dient. In der Regel wird dieser Operator für INSERT-Abfragen in einer gespeicherten Prozedur verwendet. Parameter Table Scan ist ein logischer und physischer Operator.
Keine Partial Aggregate Partial Aggregate wird in parallelen Plänen verwendet. Hiermit wird eine Aggregatfunktion auf möglichst viele Eingabezeilen angewandt, damit das Schreiben auf den Datenträger (der so genannte "Überlauf") nicht erforderlich ist. Hash Match ist der einzige physische Operator (Iterator), der die Partitionsaggregation implementiert. Partial Aggregate ist ein logischer Operator.
Cursoroperatorsymbol Population Query Der Population Query-Operator füllt die Arbeitstabelle eines Cursors auf, wenn der Cursor geöffnet wird.
Symbol Symbol Refresh Query Der Refresh Query-Operator ruft aktuelle Daten für die Zeilen im Fetchpuffer ab.
Remotelöschoperatorsymbol Remote Delete Der Remote Delete-Operator löscht die Eingabezeilen in einem Remoteobjekt. Remote Delete ist ein logischer und physischer Operator.
Remoteindexsuche Showplan-Operator Remote Index Scan Der Remote Index Scan -Operator durchsucht den in der Argumentspalte angegebenen Remoteindex. Remote Index Scan ist ein logischer und physischer Operator.
Remoteindexsuche Showplan-Operator Remote Index Seek Der Remote Index Seek -Operator verwendet die Suchmöglichkeiten eines Remoteindexobjekts, um Zeilen abzurufen. Die Argument Spalte enthält den Namen des verwendeten Remoteindexes und das SEEK:()-Prädikat. Remote Index Seek ist ein logischer und physischer Operator.
Remoteeinfügeoperatorsymbol Remote Insert Der Remote Insert -Operator fügt die Eingabezeilen in ein Remoteobjekt ein. Remote Insert ist ein logischer und physischer Operator.
Symbol Remote Query Durch den Operator Remote Query wird eine Abfrage an eine Remotequelle übermittelt. Der Text der Abfrage, die an den Remoteserver gesendet wird, wird in der Argument Spalte angezeigt. Remote Query ist ein logischer und physischer Operator.
Remotescan-Operatorsymbol Remote Scan Der Operator Remote Scan überprüft ein Remoteobjekt. Der Name des Remoteobjekts wird in der Argument Spalte angezeigt. Remote Scan ist ein logischer und physischer Operator.
Remoteupdateoperatorsymbol Remote Update Der Remote Update-Operator aktualisiert die Eingabezeilen in einem Remoteobjekt. Remote Update ist ein logischer und physischer Operator.
Symbol des Parallelitätsoperators Repartition Streams Der Repartition Streams -Operator verarbeitet und generiert mehrere Datenströme von Datensätzen. Inhalt und Format der Datensätze werden nicht geändert. Wenn der Abfrageoptimierer einen Bitmapfilter verwendet, wird die Anzahl der Zeilen im Ausgabedatenstrom reduziert. Jeder Datensatz aus einem Eingabedatenstrom wird in einem Ausgabedatenstrom platziert. Wenn dieser Operator die Reihenfolge beibehalten soll, müssen alle Eingabedatenströme entsprechend geordnet vorliegen und in mehrere geordnete Ausgabedatenströme zusammengeführt werden. Wenn die Ausgabe partitioniert ist, enthält die Argument Spalte ein PARTITION COLUMNS:()-Prädikat und die Partitionierungsspalten. Wenn die Ausgabe sortiert ist, enthält die Argument Spalte ein ORDER BY:()-Prädikat und die sortierten Spalten. Repartition Streams ist ein logischer Operator. Der Operator wird nur in parallelen Abfrageplänen verwendet.
Ergebnissprachelementsymbol Result Der Result-Operator stellt die Daten dar, die am Ende eines Abfrageplans zurückgegeben werden. Dies ist normalerweise das Stammelement eines Showplans. Result ist ein Sprachelement.
RID-Suchoperatorsymbol RID Lookup RID Lookup ist ein Bookmark Lookup für einen Heap, der eine bereitgestellte Zeilen-ID (RID) verwendet. Die Argument Spalte enthält die Lesezeichenbeschriftung, die verwendet wird, um die Zeile in der Tabelle nachzuschlagen, und den Namen der Tabelle, in der die Zeile nachgeschlagen wird. RID Lookup wird stets durch eine NESTED LOOP JOIN-Anweisung begleitet. RID Lookup ist ein physischer Operator. Weitere Informationen zu Bookmark Lookups finden Sie unter „Bookmark Lookup“ im SQL Server-Blog von MSDN.
Keine Right Anti Semi Join Der logische Operator Right Anti Semi Join gibt alle Zeilen aus der zweiten (unteren) Eingabe aus, für die keine übereinstimmende Zeile in der ersten (oberen) Eingabe vorhanden ist. Eine übereinstimmende Zeile wird als Zeile definiert, die das Prädikat in der Argument Spalte erfüllt (wenn kein Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile). Right Anti Semi Join ist ein logischer Operator.
Keine Right Outer Join Der Right Outer Join-Operator gibt alle Zeilen zurück, die den Join der zweiten (unteren) Eingabe mit der ersten (oberen) Eingabe erfüllen. Er gibt auch alle Zeilen aus der zweiten Eingabe mit NULL-Werten zurück, für die keine übereinstimmende Zeile in der ersten Eingabe vorhanden ist. Wenn in der Argument Spalte kein Join-Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile. Right Outer Join ist ein logischer Operator.
Keine Right Semi Join Der Right Semi Join-Operator gibt alle Zeilen aus der zweiten (unteren) Eingabe zurück, für die eine übereinstimmende Zeile in der ersten (oberen) Eingabe vorhanden ist. Wenn in der Argument Spalte kein Join-Prädikat vorhanden ist, ist jede Zeile eine übereinstimmende Zeile. Right Semi Join ist ein logischer Operator.
Symbol Row Count Spool Der Row Count Spool -Operator scannt die Eingabe, zählt, wie viele Zeilen vorhanden sind, und gibt dieselbe Anzahl an leeren Zeilen zurück. Dieser Operator wird verwendet, wenn es darauf ankommt, die Existenz von Zeilen und nicht ihren Inhalt zu überprüfen. Wenn ein Nested Loops Operator beispielsweise einen Linken Semi-Join-Vorgang ausführt und das Join-Prädikat für die innere Eingabe gilt, kann ein Zeilenanzahlpool oben in der inneren Eingabe des Nested Loops Operators platziert werden. Dann kann der Nested Loops Operator bestimmen, wie viele Zeilen vom Zeilenanzahlspool ausgegeben werden (da die tatsächlichen Daten von der inneren Seite nicht benötigt werden), um zu bestimmen, ob die äußere Zeile zurückgegeben werden soll. BeimRow Count Spool -Operator handelt es sich um einen physischen Operator.
Segmentoperatorsymbol Segment Segment ist ein physischer und logischer Operator. Dieser Operator teilt die Eingabeset basierend auf dem Wert von mindestens einer Spalte in Segmente auf. Diese Spalten werden als Argumente im Operator Segment angezeigt. Anschließend gibt der Operator ein Segment nach dem anderen aus.
Keine Segment Repartition Ein paralleler Abfrageplan kann mitunter logische Bereiche von Iteratoren enthalten. Alle Iteratoren innerhalb eines solchen Bereichs können durch parallele Threads ausgeführt werden. Die Bereiche selbst müssen seriell ausgeführt werden. Einige der Parallelism-Iteratoren innerhalb eines einzelnen Bereichs werden Branch Repartition genannt. Der Parallelism-Iterator an der Grenze zwischen zwei Bereichen wird Segment Repartition genannt. Branch Repartition und Segment Repartition sind logische Operatoren.
Sequenzoperatorsymbol Sequence Der Sequence-Operator steuert umfangreiche Aktualisierungspläne. Er führt die Eingaben sequenziell aus (von oben nach unten). Jede Eingabe stellt in der Regel ein Update eines anderen Objekts dar. Der Operator gibt nur die Zeilen zurück, die aus der letzten (unteren) Eingabe stammen. Sequence ist ein logischer und physischer Operator.
Sequenzprojektoperatorsymbol Sequence Project Der Sequence Project-Operator fügt Spalten hinzu, um für eine geordnete Menge Berechnungen auszuführen. Dieser Operator teilt die Eingabeset basierend auf dem Wert von mindestens einer Spalte in Segmente auf. Anschließend gibt der Operator ein Segment nach dem anderen aus. Diese Spalten werden im Sequence Project-Operator als Argumente angezeigt. Sequence Project ist ein logischer und physischer Operator.
Symbol Momentaufnahme Mit dem Snapshot -Operator wird ein Cursor erstellt, der von anderen vorgenommene Änderungen nicht wahrnimmt.
Symbol des Sortieroperators Sort Der Sort Operator sortiert alle eingehenden Zeilen. Die Argument Spalte enthält entweder ein DISTINCT ORDER BY:()-Prädikat, wenn Duplikate durch diesen Vorgang entfernt werden, oder ein ORDER BY:()-Prädikat mit einer durch Trennzeichen getrennten Liste der zu sortierenden Spalten. Die Spalten werden mit dem Präfix ASC versehen, wenn sie in aufsteigender Reihenfolge sortiert werden, oder mit der Zeichenfolge DESC, wenn sie in absteigender Reihenfolge sortiert werden. Sort ist ein logischer und physischer Operator.
Operatorsymbol split Split Der Split Operator wird verwendet, um die Updateverarbeitung zu optimieren. Er teilt jeden Aktualisierungsvorgang in einen Lösch- und einen Einfügevorgang auf. Split ist ein logischer und physischer Operator.
Symbol des Spooloperators Spool Der Spool-Operator speichert ein Zwischenabfrageergebnis in der tempdb Datenbank.
Symbol Stream Aggregate Der Stream Aggregate-Operator gruppiert Zeilen nach einer oder mehreren Spalten und berechnet einen oder mehrere Aggregatausdrücke, die von der Abfrage zurückgegeben wurden. Auf die Ausgabe dieses Operators kann durch spätere Operatoren in der Abfrage verwiesen werden, die Ausgabe kann an den Client zurückgegeben werden oder beides. Für den Stream Aggregate-Operator ist es erforderlich, dass die Eingabe innerhalb der Gruppen nach den Spalten sortiert ist. Der Optimierer verwendet vor diesem Operator einen Sort-Operator, wenn die Daten nicht bereits durch einen vorherigen Sort-Operator oder durch einen geordneten Indexsuch- oder Scanvorgang sortiert wurden. In der SHOWPLAN_ALL-Anweisung oder im grafischen Ausführungsplan in SQL Server Management Studio werden die Spalten im GROUP BY-Prädikat in der Argument Spalte aufgeführt, und die Aggregatausdrücke werden in der Spalte Definierte Werte aufgeführt. Stream Aggregate ist ein physischer Operator.
Schalteroperatorsymbol Switch Switch ist ein spezieller Verkettungsiterator, der über n Eingaben verfügt. Mit jedem Switch -Operator ist ein Ausdruck verbunden. Abhängig vom Rückgabewert des Ausdrucks (zwischen 0 und n-1) kopiert Switch den entsprechenden Eingabedatenstrom in den Ausgabedatenstrom. Eine Verwendungsmöglichkeit von Switch besteht in der Implementierung von Abfrageplänen, die schnelle Vorwärtscursor mit bestimmten Operatoren, z.B. dem TOP -Operator, enthalten. Switch ist sowohl ein logischer als auch ein physischer Operator.
Tabellenlöschoperatorsymbol Table Delete Der Table Delete physische Operator löscht Zeilen aus der Tabelle, die in der Argument Spalte des Abfrageausführungsplans angegeben ist.
Tabelleneinfügeoperatorsymbol Table Insert Der Table Insert Operator fügt Zeilen aus seiner Eingabe in die Tabelle ein, die in der Argument Spalte des Abfrageausführungsplans angegeben ist. Die Argument-Spalte enthält auch ein SET:()-Prädikat, das den für die einzelnen Spalten festgelegten Wert anzeigt. Wenn Table Insert keine untergeordneten Elemente für Eingabewerte enthält, wird die eingefügte Zeile aus dem Insert-Operator selbst übernommen. Table Insert ist ein physischer Operator.
Tabellendruckoperator Table Merge Der Table Merge -Operator wendet einen Mergedatenstrom auf einen Heap an. Der Operator löscht, aktualisiert oder fügt Zeilen in der Tabelle ein, die in der Argument Spalte des Operators angegeben ist. Der tatsächliche Vorgang hängt vom Laufzeitwert der SPALTE ACTION ab, die in der Argument Spalte des Operators angegeben ist. Table Merge ist ein physischer Operator.
Tabellenscanoperatorsymbol Table Scan Der Table Scan Operator ruft alle Zeilen aus der Tabelle ab, die in der Argument Spalte des Abfrageausführungsplans angegeben ist. Wenn ein WHERE:()-Prädikat in der Argument Spalte angezeigt wird, werden nur die Zeilen zurückgegeben, die dem Prädikat entsprechen. Table Scan ist ein logischer und physischer Operator.
Tabellen-Spooloperatorsymbol Table Spool Der Table Spool -Operator scannt die Eingabe und platziert eine Kopie jeder Zeile in einer verborgenen Spooltabelle, die in der tempdb -Datenbank gespeichert und nur für die Dauer der Abfrage vorhanden ist. Wenn der Operator erneut aktiviert wird (z. B. durch einen Nested Loops Operator), aber keine Neubindung erforderlich ist, werden die gruppierten Daten verwendet, anstatt die Eingabe erneut zu scannen. Table Spool ist ein physischer Operator.
Tabellenaktualisierungsoperatorsymbol Table Update Der Table Update physische Operator aktualisiert die Eingabezeilen in der Tabelle, die in der Argument Spalte des Abfrageausführungsplans angegeben ist. Das SET:()-Prädikat bestimmt den Wert jeder aktualisierten Spalte. Auf diese Werte kann in der SET-Klausel oder an anderer Stelle in diesem Operator sowie an anderer Stelle dieser Abfrage verwiesen werden.
Tabellenwertfunktionsoperatorsymbol Table-valued Function Der Tabellenwertfunktionsoperator wertet eine Tabellenwertfunktion (entweder Transact-SQL oder CLR) aus und speichert die resultierenden Zeilen in der datenbank tempdb . Wenn die übergeordneten Iteratoren die Zeilen anfordern, gibt die Tabellenwertfunktion die Zeilen von zurück tempdb.

Abfragen mit Aufrufen von Tabellenwertfunktionen generieren Abfragepläne mit dem Tabellenwertfunktion -Iterator. DieTabellenwertfunktion kann mit verschiedenen Parameterwerten analysiert werden:

DerTabellenwertfunktion-XML-Leser gibt einen XML-BLOB als Parameter ein und erstellt ein Rowset, das XML-Knoten in der XML-Dokumentreihenfolge darstellt. Andere Eingabeparameter können die zurückgegebenen XML-Knoten auf eine Teilmenge von XML-Dokumenten einschränken.

Tabellenwertfunktion-XML-Leser mit XPath-Filter ist ein spezieller Typ von Tabellenwertfunktion-XML-Leser , der die Ausgabe auf XML-Knoten einschränkt, die einen XPath-Ausdruck erfüllen.



DieTabellenwertfunktion ist sowohl ein logischer als auch ein physischer Operator.
Oberstes Operatorsymbol Top Der Top -Operator scannt die Eingabe und gibt nur die angegebene Anzahl bzw. den angegebenen Prozentsatz von Zeilen zurück, meist basierend auf einer Sortierreihenfolge. Die Argument Spalte kann eine Liste der Spalten enthalten, die auf Verbindungen überprüft werden. In Updateplänen wird der Top -Operator verwendet, um die Einschränkung der Zeilenanzahl zu erzwingen. Top ist sowohl ein logischer als auch physischer Operator. Top ist sowohl ein logischer als auch physischer Operator.
Keine Top N Sort Top N Sortierung ähnelt dem Sort Iterator, mit dem Unterschied, dass nur die ersten N-Zeilen und nicht das gesamte Resultset benötigt werden. Bei kleinen Werten für N versucht die SQL Server-Abfrageausführungs-Engine, den gesamten Sortiervorgang im Arbeitsspeicher auszuführen. Bei großen Werten für N greift die Abfrageausführungs-Engine auf die mehr generische Methode der Sortierung zurück, für die N kein Parameter ist.
Symbol für erweiterten Operator (UDX) UDX Erweiterte Operatoren (UDX) implementieren einen von vielen XQuery- und XPath-Vorgängen in SQL Server. Alle UDX-Operatoren sind sowohl logische als auch physische Operatoren.

Mit dem erweiterten Operator (UDX) FOR XML wird das relationale Rowset serialisiert, das in die XML-Darstellung einer einzelnen BLOB-Spalte in einer einzigen Ausgabezeile eingegeben wird. Bei diesem XML-Aggregationsoperator wird die Reihenfolge berücksichtigt.

Der erweiterte Operator (UDX) XML SERIALIZER ist ein XML-Aggregationsoperator, bei dem die Reihenfolge berücksichtigt wird. Er gibt Zeilen ein, die XML-Knoten oder XQuery-Skalarwerte in der XML-Dokumentreihenfolge darstellen, und erstellt eine serialisierte XML-BLOB-Spalte in einer einzelnen XML-Spalte in einer einzigen Ausgabezeile.

Der erweiterte Operator (UDX) XML FRAGMENT SERIALIZER ist eine Sonderform von XML SERIALIZER, womit Eingabezeilen verarbeitet werden, die XML-Fragmente darstellen, die in der XQuery-Erweiterung zum Ändern von Einfügungsdaten eingefügt werden.

Der erweiterte Operator (UDX) XQUERY STRING wertet den XQuery-Zeichenfolgenwert von Eingabezeilen aus, die XML-Knoten darstellen. Bei diesem Zeichenfolgen-Aggregationsoperator wird die Reihenfolge berücksichtigt. Er gibt eine Zeile mit Spalten zurück, die den XQuery-Skalarwert darstellt, der den Zeichenfolgenwert der Eingabe enthält.

Der erweiterte Operator (UDX) XQUERY LIST DECOMPOSER ist ein XQuery-Listendekompositionsoperator. Für jede Eingabezeile, die einen XML-Knoten darstellt, erstellt dieser Operator mindestens eine Zeile, die einen XQuery-Skalarwert mit einem Listenelementwert darstellt, falls die Eingabe vom XSD-Listentyp ist.

Der erweiterte Operator (UDX) XQUERY DATA wertet die XQuery-Funktion fn:data() in Eingabezeilen aus, die XML-Knoten darstellen. Bei diesem Zeichenfolgen-Aggregationsoperator wird die Reihenfolge berücksichtigt. Er gibt eine Zeile mit Spalten zurück, die den XQuery-Skalarwert darstellt, der das Ergebnis von fn:data() enthält.

Der erweiterte Operator XQUERY CONTAINS wertet die XQuery-Funktion fn:contains() in Eingabezeilen aus, die XML-Knoten darstellen. Bei diesem Zeichenfolgen-Aggregationsoperator wird die Reihenfolge berücksichtigt. Er gibt eine Zeile mit Spalten zurück, die den XQuery-Skalarwert darstellt, der das Ergebnis von fn:contains() enthält.

Der erweiterte Operator UPDATE XML NODE aktualisiert den XML-Knoten in der XQuery-Ersetzungsdatenänderungserweiterung in der modify() -Methode für den XML-Typ.
Keine Union Der Union -Operator scannt mehrere Eingaben und gibt alle gescannten Zeilen aus, wobei Duplikate entfernt werden. Union ist ein logischer Operator.
Operatorsymbol Aktualisieren (Datenbank-Engine) Update Der Update Operator aktualisiert jede Zeile aus ihrer Eingabe in dem Objekt, das in der Argument Spalte des Abfrageausführungsplans angegeben ist. Update ist ein logischer Operator. Der physische Operator ist Table Update, Index Update oder Clustered Index Update.
Während des Sprachelementsymbols While Der While Operator implementiert die Transact-SQL-While-Schleife. While ist ein Sprachelement
Tabellen-Spooloperatorsymbol Window Spool Der Window Spool-Operator erweitert jede Zeile in den Satz von Zeilen, die das ihm zugeordnete Fenster darstellen. In einer Abfrage definiert die OVER-Klausel das Fenster innerhalb eines Abfrageresultsets, und eine Fensterfunktion berechnet dann einen Wert für jede Zeile im Fenster. Window Spool ist ein logischer und physischer Operator.