Referenz für logische und physische Showplanoperator

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Operatoren beschreiben, wie SQL Server eine Abfrage oder eine DML-Anweisung (Data Manipulation Language) ausführt. 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 mithilfe der SET SHOWPLAN Anweisungen, der Grafischen Ausführungsplanoptionen in SQL Server Management Studio oder den Showplanereignissen für erweiterte Ereignisse 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 Vorgänge aus, z. B. Berechnungen, Aggregationen, Datenintegritätsprüfungen oder Verknüpfungen. 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:

  • Open(): Die Open() Methode bewirkt, dass ein physischer Operator sich selbst initialisiert und alle erforderlichen Datenstrukturen einrichtet. Während der physische Betreiber möglicherweise viele Open() Anrufe empfängt, empfängt er in der Regel nur einen.

  • GetRow(): Die GetRow() Methode bewirkt, dass ein physischer Operator die erste oder nachfolgende Datenzeile erhält. Der physische Operator erhält möglicherweise null oder viele GetRow() Anrufe.

  • Close(): Die Close() Methode bewirkt, dass ein physischer Operator einige sauber-Up-Vorgänge ausführt und sich selbst herunterfahren kann. Ein physischer Telefonieanbieter empfängt nur einen Close() Anruf, aber ein Close() Anruf wird nicht immer garantiert.

Die GetRow() Methode gibt eine Datenzeile zurück, und die Anzahl der Aufrufe wird als ActualRows in der Showplanausgabe angezeigt, die vom grafischen und XML-Showplan erzeugt wird. Weitere Informationen zu diesen SET Optionen finden Sie unter SET STATISTICS PROFILE (Transact-SQL) und SET STATISTICS XML (Transact-SQL).

Die Anzahl der ActualRebinds und ActualRewinds , die in der Showplan-Ausgabe angezeigt werden, beziehen sich auf die Anzahl der Aufrufe der Open() Methode. Wenn sich kein Operator auf der inneren Seite einer geschachtelten Schleifenverknödung befindet, ist ActualRebinds gleich 1 und ActualRewinds gleich Null. Wenn sich ein Operator auf der inneren Seite einer Schleifenverknallung befindet, sollte die Gesamtanzahl der Rebinds und Rückspulen der Anzahl der zeilen entsprechen, die auf der äußeren Seite der Verknüpfung verarbeitet werden. 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. Ein Rücklauf bedeutet, dass keines der korrelierten Parameter geändert wurde und das vorherige innere Resultset möglicherweise wiederverwendet werden kann.

ActualRebinds und ActualRewinds sind in XML-Showplan-Ausgabe vorhanden, die mit und SET STATISTICS XML ON dem grafischen Showplan erstellt wird. Sie werden nur für die Operatoren "Nicht gruppierter Indexspool", "Remoteabfrage", "Zeilenanzahl", "Spool", "Sort", "Table Spool" und "Table-valued Function" aufgefüllt. ActualRebinds und ActualRewinds können auch für die Assert - und Filter-Operatoren aufgefüllt werden, wenn das StartupExpression-Attribut auf TRUE festgelegt ist.

Wenn ActualRebinds und ActualRewinds in einem XML-Showplan vorhanden sind, sind sie mit "EstimateRebinds " und "EstimateRewinds" vergleichbar. Wenn sie nicht vorhanden sind, ist die geschätzte Anzahl von Zeilen (EstimateRows) mit der tatsächlichen Anzahl von Zeilen (ActualRows) vergleichbar. Die tatsächliche grafische Showplanausgabe zeigt Nullen für die tatsächlichen Rebinds und ist-Zurückspulen an, wenn sie nicht vorhanden sind.

Ein verwandter Zähler, ActualEndOfScans, ist im XML- und grafischen Showplan verfügbar. Wenn ein physischer Operator das Ende seines Datenstroms erreicht, erhöht sich dieser Zähler um eins. Wenn ein physischer Operator das Ende seines Datenstroms erreicht, wird dieser Zähler um 1 erhöht. Wie bei rebinds und rückspulen kann das Ende der Scans mehrere sein, nur wenn sich der Operator auf der inneren Seite einer Schleifenverknöfung befindet. Das Ende der Überprüfungsanzahl sollte kleiner oder gleich der Summe der Anzahl der Rebinds und Rückspulen sein.

Zuordnen physischer und logischer 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 verwendet einen kostenbasierten Ansatz, um zu bestimmen, welcher physische Operator einen logischen Operator implementiert.

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.

Batchmodusausführung

Die Ausführung des Batchmodus ist eine Abfrageverarbeitungsmethode, die verwendet wird, um mehrere Zeilen zusammen zu verarbeiten (daher der Ausdrucksbatch) anstelle einer Zeile gleichzeitig. Die Batchmodusverarbeitung verwendet Algorithmen, die für Mehrkern-CPUs optimiert sind und den Speicherdurchsatz auf moderner Hardware erhöhen. Der Batchmodus kann von einer Reihe von Operatoren sowohl für Rowstore- als auch für Spaltenspeicherobjekte verwendet werden. Weitere Informationen finden Sie unter Handbuch zur Architektur der Abfrageverarbeitung.

Operatorbeschreibungen

In diesem Abschnitt finden Sie Beschreibungen der logischen und physischen Operatoren. Sie können die Eigenschaften von Abfrageplänen und Operatoren mithilfe des Eigenschaftenbereichs in der Abfrageplanansicht von SQL Server Management Studio (SSMS) und Azure Data Studio anzeigen.

Tipp

Wenn ein bestimmtes grafisches Ausführungsplansymbol einen gelben Kreis mit zwei Pfeil von rechts nach links aufweist, bedeutet dies, dass der Operator parallel ausgeführt wird. Weitere Informationen zur Parallelität finden Sie im Handbuch zur Thread- und Taskarchitektur.

Schaltfläche Showplan-Operator Beschreibung
Adaptiver Join Mit dem Adaptiver Join-Operator können Sie wählen, ob eine Hashjoinmethode oder eine Methode mit einem Join geschachtelter Schleifen bis nach dem Scan der ersten Eingabe zurückgestellt wird.

Adaptive Verknüpfung ist ein physischer Operator. Weitere Informationen finden Sie unter Grundlegendes zu adaptiven Joins.
Aggregieren Der Aggregatoperator berechnet einen Ausdruck mit MIN, , MAX, , SUM, COUNToder AVG.

Aggregat ist ein logischer und physischer Operator.
Arithmetic Expression Der Arithmetic Expression -Operator berechnet einen neuen Wert anhand vorhandener Werte in einer Zeile. Arithmetischer Ausdruck wird in neueren Versionen von SQL Server nicht verwendet.
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 im Eigenschaftenbereich des Ausführungsplans aus. Wenn dieser Ausdruck ausgewertet NULLwird, wird die Zeile über den Assert-Operator übergeben, und die Abfrageausführung wird fortgesetzt. Wenn dieser Ausdruck einen Wert ungleich Null auswertet, wird der entsprechende Fehler ausgelöst.

Assert ist ein physischer Operator.
Zuweisen Der Assign -Operator weist einer Variablen den Wert eines Ausdrucks oder einer Konstanten zu.

Assign ist ein Sprachelement.
Keine Async Concat Der Async 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. Async Concat gibt Open()-Aufrufe für alle untergeordneten Knoten gleichzeitig aus und wendet dann auf jeden untergeordneten Knoten ein Bitmap an. Bei jedem Bit, bei dem es sich um ein 1, Async Concat handelt, werden die Ausgabezeilen bei Bedarf an den übergeordneten Knoten gesendet.
Bitmap SQL Server verwendet den Bitmapoperator zum Implementieren der Bitmapfilterung in parallelen Abfrageplänen. Durch die Bitmapfilterung wird die Abfrageausführung beschleunigt, indem Zeilen mit Schlüsselwerten, die keine Verknüpfungsdatensätze erzeugen können, beseitigt werden, bevor Zeilen durch einen anderen Operator wie z. B. den Parallelismus-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.

DerBitmap -Operator ist ein physischer Operator.
Bitmap Create Der Bitmap-Create-Operator wird in der Showplanausgabe angezeigt, in der Bitmaps erstellt werden.

Bitmap Create ist ein logischer Operator.
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. Bestimmte Parallelism -Iteratoren innerhalb eines einzelnen Bereichs werden Branch Repartitiongenannt. Der Parallelism -Iterator an der Grenze zwischen zwei Bereichen wird Segment Repartitiongenannt.

SowohlBranch Repartition als auch Segment Repartition sind logische Operatoren.
Broadcast Broadcast weist einen untergeordneten Knoten und n übergeordnete Knoten auf. Broadcast sendet die Eingabezeilen bei Bedarf an mehrere Consumer. Jeder Consumer erhält alle Zeilen. Wenn beispielsweise alle Verbraucher Seiten einer Hash-Verknüpfung erstellen, werden n Kopien der Hashtabellen erstellt.
Build Hash Gibt den Build einer Batchhashtabelle für einen speicheroptimierten Spaltenspeicherindex an.

Gilt nur für: NUR SQL Server 2012 (11.x).
Clustered Index Delete Der Operator "Clustered Index Delete " löscht Zeilen aus dem in der Objekteigenschaft angegebenen gruppierten Index, der im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Wenn ein SeekPredicate oder Prädikat vorhanden ist, werden nur die Zeilen gelöscht, die das Prädikat erfüllen.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Clustered Index Delete ist ein physischer Operator.
Clustered Index Insert Der Operator "Clustered Index Insert " fügt Zeilen aus der Eingabe in den gruppierten Index ein, der in der Objekteigenschaft angegeben ist und im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Der XML-Showplan enthält setPredicate - und ColumnReference-Eigenschaften , die verwendet werden können, um den Wert zu bestimmen, auf den jede Spalte festgelegt ist. Wenn "Gruppierter Index einfügen" keine untergeordneten Elemente für Einfügewerte enthält, wird die eingefügte Zeile vom Operator "Einfügen" selbst übernommen.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

"Gruppierter Index einfügen" ist ein physischer Operator.
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 in der Objekteigenschaft angegebenen gruppierten Index ein, der im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Der tatsächliche Vorgang hängt vom Laufzeitwert der ActionColumn-Eigenschaft ab.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Clustered Index Merge ist ein physischer Operator.
Clustered Index Scan Der Operator "Clustered Index Scan " überprüft den gruppierten Index, der in der Objekteigenschaft angegeben ist und im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Wenn ein optionales Prädikat vorhanden ist, werden nur die Zeilen zurückgegeben, die das Prädikat erfüllen. Wenn die Eigenschaft "Sortiert" im Eigenschaftenbereich oder IM XML-Showplan "True" lautet, hat der Abfrageprozessor festgestellt, dass die Zeilen in der Reihenfolge zurückgegeben werden müssen, in der der gruppierte Index sie sortiert hat. Wenn die Ordered-Eigenschaft "False" lautet, überprüft die Datenbank-Engine den Index optimal, ohne die Ausgabe unbedingt zu sortieren.

Clustered Index Scan ist ein logischer und physischer Operator.
Clustered Index Seek Der Clustered Index Seek -Operator verwendet die Suchfunktionen der Indizes, um Zeilen aus einem gruppierten Index abzurufen. Die Im Eigenschaftenbereich der grafischen und XML-Showplans aufgelistete Objekteigenschaft enthält den Namen des verwendeten Gruppierten Indexes. Das SeekPredicate enthält das Prädikat für die Suche. Die Datenbank-Engine verwendet den Index, um nur die Zeilen zu verarbeiten, die das SeekPredicate erfüllen. Sie kann auch eine Prädikateigenschaft enthalten, bei der die Datenbank-Engine für alle Zeilen ausgewertet wird, die das SeekPredicate erfüllen, dies ist jedoch optional und verwendet keine Indizes, um diesen Vorgang abzuschließen.

Wenn die Eigenschaft "Sortiert" im Eigenschaftenbereich oder IM XML-Showplan "True" lautet, hat der Abfrageprozessor festgestellt, dass die Zeilen in der Reihenfolge zurückgegeben werden müssen, in der der gruppierte Index sie sortiert hat. Wenn die Ordered-Eigenschaft "False" lautet, durchsucht die Datenbank-Engine den Index optimal, ohne die Ausgabe unbedingt zu sortieren. Die Anforderung, dass die Ausgabe ihre Sortierung beibehalten muss, kann weniger effizient sein als die Herstellung nicht sortierter Ausgaben.

Clustered Index Seek ist ein logischer und physischer Operator.
Clustered Index Update Der Operator "Clustered Index Update " aktualisiert Eingabezeilen im gruppierten Index, der in der Objekteigenschaft angegeben ist und im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Wenn die Prädikateigenschaft vorhanden ist, werden nur die Zeilen aktualisiert, die dieses Prädikat erfüllen. Wenn die SetPredicate-Eigenschaft vorhanden ist, wird jede aktualisierte Spalte auf diesen Wert festgelegt. Wenn die DefineValue-Eigenschaft vorhanden ist, werden die von diesem Operator definierten Werte aufgelistet. Auf diese Werte kann in der SET Klausel oder an anderer Stelle innerhalb dieses Operators und an anderer Stelle innerhalb dieser Abfrage verwiesen werden.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Clustered Index Update ist ein logischer und physischer Operator.
Zuklappen 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. Der Eigenschaftenbereich enthält eine Gruppe nach Prädikat, die eine Liste der Schlüsselspalten angibt. Wenn der Abfrageprozessor auf benachbarte Zeilen trifft, die dieselben Schlüsselwerte löschen und einfügen, ersetzt er diese separaten Vorgänge durch einen einzigen, effizienteren Aktualisierungsvorgang.

Collapse ist sowohl ein logischer als auch physischer Operator.
Columnstore-Index löschen Der Operator "Columnstore Index Delete " stellt das Löschen von Zeilen aus dem in der Object-Eigenschaft angegebenen Spaltenspeicherindex dar, der im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Das Löschen erfolgt über den Clustered Index Delete für einen gruppierten Columnstore-Index und über den Index Delete-Operator für einen nicht gruppierten Columnstore-Index. Der Indextyp (Clustered, NonClustered oder ViewNonClustered) wird in der IndexKind-Eigenschaft im XML-Showplan angegeben. Das SeekPredicate-Element wird für das Löschen eines Columnstore-Indexes nicht unterstützt. Zu löschende Zeilen werden von einem untergeordneten Operator gelesen.

Columnstore Index Delete ist ein physischer Operator.
Spaltenspeicherindex einfügen Der Operator "Columnstore Index Insert " stellt die Einfügung von Zeilen aus der Eingabe in den in der Object-Eigenschaft angegebenen Spaltenspeicherindex dar, der im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Das Einfügen erfolgt über den Clustered Index Insert für einen gruppierten Columnstore-Index und über den Index Insert-Operator für einen nicht gruppierten Columnstore-Index. Der Indextyp (Clustered, NonClustered oder ViewNonClustered) wird in der IndexKind-Eigenschaft im XML-Showplan angegeben. Der XML-Showplan enthält setPredicate - und ColumnReference-Eigenschaften , die verwendet werden können, um den Wert zu bestimmen, auf den jede Spalte festgelegt ist.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Columnstore Index Insert ist ein physischer Operator.
Zusammenführen des Spaltenspeicherindexes Der Columnstore-Indexzusammenführung stellt die Anwendung eines Seriendruckdatenstroms mithilfe des Zusammenführungsoperators "Gruppierter Indexzusammenführung" dar. Der Operator löscht, aktualisiert oder fügt Zeilen aus dem gruppierten Spaltenspeicherindex ein, der in der Objekteigenschaft angegeben ist und im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Der tatsächliche Vorgang hängt vom Laufzeitwert der ActionColumn-Eigenschaft ab.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Columnstore Index Merge ist ein physischer Operator.
Columnstore-Indexscan Der Columnstore Index Scan-Operator stellt einen Scan des in der Object-Eigenschaft angegebenen Columnstore-Index dar, der im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Der Scan erfolgt über den Clustered Index Scan für einen gruppierten Columnstore-Index und über den Indexscan-Operator für einen nicht gruppierten Columnstore-Index. Der Indextyp (Clustered, NonClustered oder ViewNonClustered) wird in der IndexKind-Eigenschaft im XML-Showplan angegeben. Wenn ein optionales Prädikat vorhanden ist, werden nur die Zeilen zurückgegeben, die das Prädikat erfüllen. Die SeekPredicate-Eigenschaft ist nur für einen partitionierten Columnstore-Index und nur für Gleichheits- oder Ungleichheitsbedingungen verfügbar. Wenn sich die partitionierte Spalte im Abfrage-Prädikat befindet, kann die Partitionslöschung die Anzahl der zu überprüfenden Zeilengruppen verringern.

Der Columnstore-Indexscan ist ein physischer Operator.
Columnstore-Indexaktualisierung Der Operator "Columnstore Index Update " stellt eine Aktualisierung auf eine oder mehrere Zeilen im columnstore-Index dar, der in der Objekteigenschaft angegeben ist, die im Eigenschaftenbereich der grafischen und XML-Showplans aufgeführt ist. Aktualisierungen erfolgen über den Operator "Clustered Index Update " für einen gruppierten Columnstore-Index und über den Indexaktualisierungsoperator für einen nicht gruppierten Columnstore-Index. Der Indextyp (Clustered, NonClustered oder ViewNonClustered) wird in der IndexKind-Eigenschaft im XML-Showplan angegeben. Das SeekPredicate-Element wird für eine Columnstore-Indexaktualisierung nicht unterstützt. Zu aktualisierende Zeilen werden von einem untergeordneten Operator gelesen. Wenn die SetPredicate-Eigenschaft vorhanden ist, wird jede aktualisierte Spalte auf diesen Wert festgelegt. Wenn die DefineValue-Eigenschaft vorhanden ist, werden die von diesem Operator definierten Werte aufgelistet. Auf diese Werte kann in der SET Klausel oder an anderer Stelle innerhalb dieses Operators und an anderer Stelle innerhalb dieser Abfrage verwiesen werden.

Hinweis: Änderungen an gruppierten Indizes können sich auf nicht gruppierte Indizes auswirken.

Columnstore Index Update ist ein physischer Operator.
Compute Scalar Der Compute Scalar -Operator wertet einen Ausdruck aus und erstellt einen berechneten skalaren Wert. Dies kann dann an den Benutzer zurückgegeben werden, auf den an anderer Stelle in der Abfrage verwiesen wird, oder beides. Ein Beispiel für beide Fälle ist ein Filterprädikat oder Joinprädikat.

Compute scalar operators that appear in showplans generated by SET STATISTICS XML might not contain the RunTimeInformation element. In grafischen Showplans, Actual Rows, Actual Rebinds und Actual Rewinds ist möglicherweise im Eigenschaftenfenster nicht vorhanden, wenn die Option "Tatsächlicher Ausführungsplan einschließen" in SQL Server Management Studio ausgewählt ist. Wenn dies geschieht, bedeutet dies, dass diese Operatoren zwar im kompilierten Abfrageplan verwendet wurden, aber ihre Arbeit von anderen Operatoren im Laufzeitabfrageplan ausgeführt wurde. Die Anzahl der Ausführungen in der showplan-Ausgabe, die generiert SET STATISTICS PROFILE wird, entspricht der Summe der Rebinds und Rückspulen in Showplans, die von SET STATISTICS XML.

Compute Scalar ist sowohl ein logischer als auch physischer Operator.
Concatenation Der Concatenation -Operator scannt mehrere Eingaben und gibt die gescannten Zeilen zurück. Die Verkettung wird in der Regel verwendet, um das Transact-SQL-Konstrukt UNION ALL 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.
Bedingt (Wenn und While) Der bedingte Operator führt die bedingte Verarbeitung basierend auf einer oder WHILE einer IF Schleife aus. Wenn und While Sprachelemente sind.
Constant Scan Mithilfe des Constant Scan -Operators wird mindestens eine konstante Zeile in eine Abfrage eingeführt. Ein Compute Scalar -Operator wird häufig nach einem Constant Scan verwendet, um einer Zeile, die durch den Constant Scan -Operator erstellt wurde, Spalten hinzuzufügen. Der Konstantenscan kann eine oder mehrere Zeilen mit null oder mehr Spalten generieren.
Konvertieren Der Convert -Operator wandelt einen skalaren Datentyp in einen anderen um.

Convert ist ein Sprachelement.
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 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.

Logische Operatoren umfassen asynchrone, optimistische, primäre, schreibgeschützte, Bildlaufsperren, sekundäre und synchrone Operatoren.

Physische Operatoren umfassen Dynamic, Fetch Query, Keyset, Population Query, Refresh Query und Snapshot.
Declare Der Operator Declare weist eine lokale Variable im Abfrageplan zu.

Declare ist ein Sprachelement.
Delete Der Delete-Operator löscht Zeilen (aus einem Objekt), die das optionale Prädikat im Eigenschaftenbereich erfüllen.
Deleted Scan In Triggern scannt der Operator "Gelöschter Scan " die gelöschte Tabelle.
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 logische Operator "Distinct Sort " überprüft die Eingabe, entfernt Duplikate und Sortierung nach den spalten, die in der unterschiedlichen Reihenfolge durch Prädikat des Eigenschaftenbereichs angegeben sind.

Distinct Sort ist ein logischer Operator.
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. Der Datensatzinhalt und das Format 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 der Eigenschaftenbereich ein Partitionsspalten-Prädikat und die Partitionierungsspalten .

Distribute Streams ist ein logischer Operator.
Dynamisch Der Dynamic -Operator verwendet einen Cursor, der alle von anderen vorgenommenen Änderungen wahrnimmt.
Eager Spool Der Eager Spool -Operator verarbeitet die gesamte Eingabe und speichert jede Zeile in einem verborgenen temporären Objekt in der tempdb -Datenbank. Wenn der Operator zurückgesetzt wird (beispielsweise aufgrund eines Nested Loops -Operators), aber keine erneute Zuordnung erforderlich ist, werden die gespoolten 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.
Fetch Query Der Fetch Query -Operator ruft Zeilen ab, wenn eine Abrufoperation für einen Cursor ausgegeben wird.
Filter Der Filteroperator überprüft die Eingabe und gibt nur die Zeilen zurück, die den Filterausdruck (Prädikat) erfüllen, der im Eigenschaftenbereich angezeigt wird.
Keine Flow Distinct Der Flow Distinct-Operator überprüft die Eingabe und entfernt Duplikate. Während der Distinct-Operator alle Eingaben verwendet, bevor eine Ausgabe erzeugt wird, gibt der Flow Distinct-Operator jede Zeile zurück, wie sie von der Eingabe abgerufen wird (es sei denn, diese Zeile ist ein Duplikat, in diesem Fall ist es nicht Karte ed).

Flow Distinct ist ein logischer Operator.
Überprüfung der Fremdschlüsselverweise Der Operator "Fremdschlüsselverweise überprüfen " führt referenzielle Integritätsprüfungen durch, indem die geänderte Zeile mit den Zeilen in den referenzierenden Tabellen verglichen wird, um zu überprüfen, ob die Änderung die referenzielle Integrität nicht unterbricht. Der Operator für die Überprüfung der Fremdschlüsselverweise wird verwenden, wenn mehr als 253 Fremdschlüsselverweise auf dem gleichen primären oder eindeutigen Schlüssel vorhanden sind.

Die Überprüfung der Fremdschlüsselverweise ist ein logischer und physischer Operator.
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:

- Die erste Eingabe ohne Übereinstimmungen in der zweiten Eingabe.

- Die zweite Eingabe ohne Übereinstimmungen in der ersten Eingabe.

Die Eingabe, die nicht die übereinstimmenden Werte enthält, wird als Nullwert zurückgegeben.

Full Outer Join ist ein logischer Operator.
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. Der Datensatzinhalt und das Format 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 der Eigenschaftenbereich eine Reihenfolge nach Prädikat und die Namen der sortierten Spalten.

Gather Streams ist ein logischer Operator.
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 im Eigenschaftenbereich 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 (im Eigenschaftenbereich angegebenRESIDUAL:()), 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:

– Verwenden Sie für alle Verknüpfungen die erste (obere) Eingabe, um die Hashtabelle und die zweite (untere) Eingabe zu erstellen, um die Hashtabelle zu untersuchen. Die Ausgabeübereinstimmungen (oder Nichtübereinstimmungen) werden vom Jointyp bestimmt. Wenn mehrere Joins dieselbe Joinspalte verwenden, werden diese Vorgänge in einem Hashteam gruppiert.

– Verwenden Sie für die eindeutigen oder Aggregatoperatoren die Eingabe, um die Hashtabelle zu erstellen (Entfernen von Duplikaten und Berechnen von Aggregatausdrücken). Wenn die Hashtabelle erstellt ist, wird die Tabelle gescannt, und alle Einträge werden ausgegeben.

– Verwenden Sie für den Union-Operator die erste Eingabe, um die Hashtabelle zu erstellen (duplikate werden entfernt). 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.

DerHash Match -Operator ist ein physischer Operator. Weitere Informationen finden Sie unter Grundlegendes zu Hashjoins.
Index löschen Der Operator "Index Delete " löscht Zeilen aus dem nicht gruppierten Index, der im Eigenschaftenbereich angegeben ist.

Index Delete ist ein physischer Operator.
Index Insert Der Operator "Index einfügen " fügt Zeilen aus der Eingabe in den nicht gruppierten Index ein, der im Eigenschaftenbereich angegeben ist. Der Eigenschaftenbereich enthält auch ein Set-Prädikat , das den Wert angibt, auf den jede Spalte festgelegt ist.

Index Insert ist ein physischer Operator.
Index Scan Der Indexscan-Operator ruft alle Zeilen aus dem nicht gruppierten Index ab, der im Eigenschaftenbereich angegeben ist. Wenn ein optionalesPrädikat im Eigenschaftenbereich angezeigt wird, werden nur die Zeilen zurückgegeben, die das Prädikat erfüllen.

Index Scan ist ein logischer und physischer Operator.
Index Seek Der Index Seek -Operator verwendet die Suchfunktionen der Indizes, um Zeilen aus einem nicht gruppierten Index abzurufen. Der Eigenschaftenbereich enthält den Namen des verwendeten nicht gruppierten Indexes. Es enthält auch das Seek-Prädikat . Die Datenbank-Engine verwendet den Index, um nur die Zeilen zu verarbeiten, die das Such-Prädikat erfüllen. Es kann optional ein Prädikat enthalten, das vom Datenbank-Engine für alle Zeilen ausgewertet wird, die das Such-Prädikat erfüllen (dazu werden die Indizes nicht verwendet). Wenn der Eigenschaftenbereich die ORDERED Klausel enthält, hat der Abfrageprozessor festgestellt, dass die Zeilen in der Reihenfolge zurückgegeben werden müssen, in der der nicht gruppierte Index sie sortiert hat. Wenn die ORDERED Klausel nicht vorhanden ist, durchsucht die Datenbank-Engine den Index optimal (was nicht garantiert, dass die Ausgabe sortiert ist). Das Zulassen, dass die Ausgabe die Sortierung beibehalten kann, ist möglicherweise weniger effizient als die Erstellung nicht sortierter Ausgaben.

Index Seek ist ein logischer und physischer Operator.
Index Spool Der Index-Spool-Operator enthält ein Such-Prädikat im Eigenschaftenbereich . Der physische Index Spool -Operator scannt die Eingabezeilen, platziert eine Kopie jeder Zeile in einer verborgenen 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. Auf diese Weise können Sie die Suchfunktion von Indizes verwenden, um nur die Zeilen auszugeben, die das Such-Prädikat erfüllen. Wenn der Operator zurückgesetzt wird (beispielsweise aufgrund eines Nested Loops -Operators), aber keine erneute Zuordnung erforderlich ist, werden die gespoolten Daten verwendet, anstatt die Eingabe erneut zu scannen.

Index-Spool ist ein physischer Operator.
Indexaktualisierung Der physische Operator "Indexaktualisierung" aktualisiert Zeilen aus seiner Eingabe im nicht gruppierten Index, der im Eigenschaftenbereich angegeben ist. Wenn ein Set-Prädikat vorhanden ist, wird jede aktualisierte Spalte auf diesen Wert festgelegt.

Indexaktualisierung ist ein physischer Operator.
Inner Join Der Operator "Inner Join " gibt jede Zeile zurück, die das Join-Prädikat der ersten (oberen) Eingabe mit der zweiten (unteren) Eingabe erfüllt.

Innere Verknüpfung ist ein logischer Operator.
Einfügen Der Operator "Einfügen " fügt jede Zeile aus der Eingabe in das im Eigenschaftenbereich angegebene Objekt ein. Der physische Operator ist entweder der Table Insert-, Index Insert- oder Clustered Index Insert -Operator.

"Einfügen" ist ein logischer Operator.
Inserted Scan In Triggern überprüft der Operator "Eingefügter Scan " die eingefügte Tabelle.

Inserted Scan ist sowohl ein logischer als auch ein physischer Operator.
Intrinsic Der systeminterne Operator ruft eine interne Transact-SQL-Funktion auf.

Intrinsic ist ein Sprachelement.
Iterator Das Iterator catchall-Symbol wird angezeigt, wenn ein geeignetes Symbol für den Iterator von der Logik, die grafische Showplans erzeugt, nicht gefunden werden kann. Das Catchall-Symbol weist nicht unbedingt auf eine Fehlerbedingung hin.
Key Lookup Der Key Lookup -Operator stellt eine Lesezeichensuche für eine Tabelle mit einem gruppierten Index dar. Der Eigenschaftenbereich enthält den Namen des gruppierten Indexes und den Clusterschlüssel, der zum Nachschlagen der Zeile im gruppierten Index verwendet wird. Key Lookup wird stets von einem Nested Loops -Operator begleitet. Wenn die WITH PREFETCH Klausel im Eigenschaftenbereich angezeigt wird, hat der Abfrageprozessor festgestellt, dass es optimal ist, beim Nachschlagen von Lesezeichen im gruppierten Index asynchrones Vorabrufen (Vorlesen) zu verwenden.

Durch die Verwendung eines Key Lookup -Operators in einem Abfrageplan wird angegeben, dass für die Abfrage eine Leistungsoptimierung von Vorteil sein könnte. Beispielsweise kann die Leistung durch Hinzufügen eines abdeckenden Indexes optimiert werden.
Keyset Der Keyset-Operator verwendet einen Cursor, der Aktualisierungen, aber keine Einfügungen von anderen sehen kann.
Language-Element Das Catchall-Symbol "Language Element " wird angezeigt, wenn ein geeignetes Symbol für den Iterator nicht durch die Logik gefunden wird, die grafische Showplans erzeugt. Das Catchall-Symbol weist nicht unbedingt auf eine Fehlerbedingung hin.
Lazy Spool Der logische Operator Lazy Spool speichert alle Zeilen aus der Eingabe in einem verborgenen temporären Objekt in der tempdb -Datenbank. Wenn der Operator zurückgesetzt wird (beispielsweise aufgrund eines Nested Loops -Operators), aber keine erneute Zuordnung erforderlich ist, werden die gespoolten 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 Operator "Linker Anti-Semi-Verknüpfung " gibt jede Zeile aus der ersten (oberen) Eingabe zurück, wenn in der zweiten (unteren) Eingabe keine übereinstimmende Zeile vorhanden ist. Wenn im Eigenschaftenbereich kein Join-Prädikat vorhanden ist, handelt es sich bei jeder Zeile um eine übereinstimmende Zeile.

Left Anti Semi Join ist ein logischer Operator.
Keine Left Outer Join Der Operator "Left Outer Join " gibt jede Zeile zurück, die das Join-Prädikat der ersten (oberen) Eingabe mit der zweiten (unteren) Eingabe erfüllt. Außerdem werden alle Zeilen aus der ersten Eingabe zurückgegeben, die keine übereinstimmenden Zeilen in der zweiten Eingabe enthalten. Die nicht übereinstimmenden Zeilen in der zweiten Eingabe werden als Nullwerte zurückgegeben. Wenn im Eigenschaftenbereich kein Join-Prädikat vorhanden ist, handelt es sich bei jeder Zeile um eine übereinstimmende Zeile.

Left Outer Join ist ein logischer Operator.
Keine Left Semi Join Der Operator "Links semi join " gibt jede Zeile aus der ersten (oberen) Eingabe zurück, wenn eine übereinstimmende Zeile in der zweiten (unteren) Eingabe vorhanden ist. Wenn im Eigenschaftenbereich kein Join-Prädikat vorhanden ist, handelt es sich bei jeder Zeile um eine übereinstimmende Zeile.

Left Semi Join ist ein logischer Operator.
Log Row Scan Der Log Row Scan -Operator scannt das Transaktionsprotokoll.

Log Row Scan ist sowohl ein logischer als auch ein physischer Operator.
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 vor einem oder mehreren Compute Scalar-Operatoren über Konstantenscanoperatoren angezeigt, die die Intervalle (dargestellt als Spalten in einer Zeile) erstellen, die dieser Operator zusammenführt.

Merge Interval ist sowohl ein logischer als auch physischer Operator.
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.

Im Eigenschaftenbereich enthält der Zusammenführungsoperator ein Zusammenführungs-Prädikat, wenn der Vorgang eine 1:n-Verknüpfung ausführt, oder ein n:n-Zusammenführungs-Prädikat, wenn der Vorgang eine n:n-Verknüpfung ausführt. Der Eigenschaftenbereich 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. Die Zusammenführung ist besonders effektiv, wenn eine explizite Sortierung nicht erforderlich ist, z. B. wenn in der Datenbank ein geeigneter B-Strukturindex vorhanden ist oder die Sortierreihenfolge für mehrere Vorgänge, z. B. eine Zusammenführungsverknuppung und gruppierung mit Rollup, ausgenutzt werden kann.

BeiMerge Join handelt es sich um einen physischen Operator. Weitere Informationen finden Sie unter Grundlegendes zu Zusammenführungsjoins.
Nested Loops Der Nested Loops -Operator führt die logischen Operationen „innere Verknüpfung“, „linke äußere Verknüpfung“, „linke Semiverknüpfung“ und „linke Antisemiverknüpfung“ aus.

Geschachtelte Schleifenbeitritte führen eine Suche in der inneren Tabelle für jede Zeile der äußeren 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 im Eigenschaftenbereich erfüllen, werden basierend auf dem ausgeführten logischen Vorgang zurückgegeben. Wenn das OPTIMIZED Attribut auf True festgelegt ist, bedeutet dies, dass eine optimierte geschachtelte Schleifen (oder Batchsortierung) verwendet wird.

Nested Loops ist ein physischer Operator. Weitere Informationen finden Sie unter Grundlegendes zu Joins geschachtelter Schleifen.
Keine Online Index Insert Der Operator "Onlineindex einfügen " gibt an, dass online ein Indexvorgang (Erstellen, Ändern oder Ablegen) ausgeführt wird. Die zugrunde liegenden Tabellendaten bleiben daher während des Indexvorgangs für Benutzer verfügbar.

Die Onlineindexeinfügung ist ein physischer Operator.
Nichts Parallelität Der Parallelism-Operator (oder Exchange-Iterator) führt die logischen Operationen Distribute Streams, Gather Streams und Repartition Streams durch. Der Eigenschaftenbereich kann ein Partitionsspalten-Prädikat mit einer durch Trennzeichen getrennten Liste der spalten enthalten, die partitioniert werden. Der Eigenschaftenbereich kann auch eine Reihenfolge nach Prädikat enthalten und die Spalten auflisten, um die Sortierreihenfolge während der Partitionierung beizubehalten.

Hinweis: Wenn eine Abfrage als parallele Abfrage kompiliert wurde, aber zur Laufzeit als serielle Abfrage ausgeführt wird, enthält RunTimeInformation die showplan-Ausgabe, die von SET STATISTICS XML oder mithilfe der Option "Tatsächlichen Ausführungsplan einschließen" in SQL Server Management Studio generiert wird, das Element für den Parallelismus-Operator nicht. In SET STATISTICS PROFILE der Ausgabe werden die tatsächlichen Zeilenzählungen und die tatsächliche Anzahl der Ausführungen für den Parallelitätsoperator Nullen angezeigt. Wenn eine bedingung auftritt, bedeutet dies, dass der Parallelismusoperator nur während der Abfragekompilierung und nicht im Laufzeitabfrageplan verwendet wurde. Manchmal werden parallele Abfragepläne serial ausgeführt, wenn auf dem Server eine hohe gleichzeitige Last vorhanden ist.

Parallelism ist ein physischer Operator. Weitere Informationen zum Parallelismusoperator finden Sie unter The Parallelism Operator.
Parameter Table Scan Der Parameter Table Scan -Operator scannt eine Tabelle, die als Parameter in der aktuellen Abfrage dient. In der Regel wird dies für INSERT Abfragen innerhalb einer gespeicherten Prozedur verwendet.

Parameter Table Scan ist ein logischer und physischer Operator.
Keine Partial Aggregate Partial Aggregate wird in parallelen Plänen verwendet. Sie wendet eine Aggregationsfunktion auf so viele Eingabezeilen wie möglich an, sodass das Schreiben auf den Datenträger (als "Überlauf" bezeichnet) nicht erforderlich ist. Hash Match ist der einzige physische Operator (Iterator), der die Teilaggregation implementiert.

Partial Aggregate ist ein logischer Operator.
Population Query Der Population Query -Operator füllt die Arbeitstabelle eines Cursors auf, wenn der Cursor geöffnet wird.
Refresh Query Der Refresh Query -Operator ruft aktuelle Daten für die Zeilen im Fetchpuffer ab.
Remote Delete Der Remote Delete -Operator löscht die Eingabezeilen in einem Remoteobjekt.

Remote Delete ist ein logischer und physischer Operator.
Remote Index Scan Der Remoteindexscan-Operator überprüft den im Eigenschaftenbereich angegebenen Remoteindex.

Remote Index Scan ist ein logischer und physischer Operator.
Remote Index Seek Der Remote Index Seek -Operator verwendet die Suchmöglichkeiten eines Remoteindexobjekts, um Zeilen abzurufen. Der Eigenschaftenbereich enthält den Namen des verwendeten Remoteindexes und des Seek-Prädikats .

Die Remoteindexsuche ist ein logischer und physischer Operator.
Remote Insert Der Remote Insert -Operator fügt die Eingabezeilen in ein Remoteobjekt ein.

Remote Insert ist ein logischer und physischer Operator.
Remote Query Durch den Operator Remote Query wird eine Abfrage an eine Remotequelle übermittelt. Der Text der an den Remoteserver gesendeten Abfrage wird im Eigenschaftenbereich angezeigt.

Remote Query ist ein logischer und physischer Operator.
Remote Scan Der Operator Remote Scan überprüft ein Remoteobjekt. Der Name des Remoteobjekts wird im Eigenschaftenbereich angezeigt.

Remote Scan ist ein logischer und physischer Operator.
Remote Update Der Remote Update -Operator aktualisiert die Eingabezeilen in einem Remoteobjekt.

Remote Update ist ein logischer und physischer Operator.
Repartition Streams Der Repartition Streams-Operator (oder Exchange-Iterator) verarbeitet und generiert mehrere Datenströme mit Datensätzen. Der Datensatzinhalt und das Format 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 der Eigenschaftenbereich ein Partitionsspalten-Prädikat und die Partitionierungsspalten . Wenn die Ausgabe sortiert ist, enthält der Eigenschaftenbereich eine Reihenfolge nach Prädikat und den sortierten Spalten. Der Operator wird nur in parallelen Abfrageplänen verwendet.

Repartition Streams ist ein logischer Operator.
Ergebnis Der Result -Operator stellt die Daten dar, die am Ende eines Abfrageplans zurückgegeben werden. Dies ist in der Regel das Stammelement eines Showplans.

Result ist ein Sprachelement.
RID Lookup RID Lookup ist ein Bookmark Lookup für einen Heap, der eine bereitgestellte Zeilen-ID (RID) verwendet. Der Eigenschaftenbereich enthält die Textmarkenbeschriftung, die zum Nachschlagen der Zeile in der Tabelle und zum Namen der Tabelle verwendet wird, in der die Zeile nachschlagen wird. RID-Nachschlagevorgang wird immer von einer NESTED LOOP JOIN.

RID Lookup ist ein physischer Operator. Weitere Informationen zu Textmarken-Nachschlagevorgängen finden Sie unter "Zugesichert lesen" und "Lesezeichensuche".
Keine Right Anti Semi Join Der Operator für die rechte Anti-Semi-Verknüpfung gibt jede Zeile aus der zweiten (unteren) Eingabe aus, wenn keine übereinstimmende Zeile in der ersten (oberen) Eingabe vorhanden ist. Eine übereinstimmende Zeile wird als Zeile definiert, die das Prädikat im Eigenschaftenbereich 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. Außerdem werden alle Zeilen aus der zweiten Eingabe zurückgegeben, die keine übereinstimmenden Zeilen in der ersten Eingabe enthalten, die mit NULLder Eingabe verknüpft sind. Wenn im Eigenschaftenbereich kein Join-Prädikat vorhanden ist, handelt es sich bei jeder Zeile um eine übereinstimmende Zeile.

Right Outer Join ist ein logischer Operator.
Keine Right Semi Join Der Operator "Rechter Semibeitritt " gibt jede Zeile aus der zweiten (unteren) Eingabe zurück, wenn in der ersten (oberen) Eingabe eine übereinstimmende Zeile vorhanden ist. Wenn im Eigenschaftenbereich kein Join-Prädikat vorhanden ist, handelt es sich bei jeder Zeile um eine übereinstimmende Zeile.

Right Semi Join ist ein logischer Operator.
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 wichtig ist, das Vorhandensein von Zeilen zu überprüfen, anstatt auf die in den Zeilen enthaltenen Daten. Wenn z. B. ein Operator mit geschachtelten Schleifen einen linken Semiverknökungsvorgang ausführt und das Join-Prädikat auf innere Eingaben angewendet wird, kann ein Zeilenanzahlspool am oberen Rand der inneren Eingabe des Operators "Geschachtelte Schleifen" platziert werden. Anschließend kann der Operator "Geschachtelte Schleifen" 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.
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. Bestimmte Parallelism -Iteratoren innerhalb eines einzelnen Bereichs werden Branch Repartitiongenannt. Der Parallelism -Iterator an der Grenze zwischen zwei Bereichen wird Segment Repartitiongenannt.

SowohlBranch Repartition als auch Segment Repartition sind logische Operatoren.
Segment Der Segmentoperator teilt den Eingabesatz in Segmente basierend auf dem Wert einer oder mehrerer Spalten auf. Diese Spalten werden als Argumente im Operator Segment angezeigt. Anschließend gibt der Operator ein Segment nach dem anderen aus.

Segment ist ein physischer und logischer Operator.
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 als Argumente im Operator Sequence Project angezeigt.

Sequence Project ist ein logischer und physischer Operator.
Sequenz 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 sowohl ein logischer als auch physischer Operator.
Momentaufnahme Der Snapshot-Operator erstellt einen Cursor, der keine Von anderen Personen vorgenommenen Änderungen anzeigt.
Sort Der Sort -Operator sortiert alle eingehenden Zeilen. Der Eigenschaftenbereich enthält entweder eine unterschiedliche Reihenfolge nach Prädikat, wenn Duplikate von diesem Vorgang entfernt werden, oder eine Reihenfolge durch Prädikat mit einer durch Trennzeichen getrennten Liste der spalten, die sortiert werden. Die Spalten werden dem Wert ASC vorangestellt, wenn die Spalten in aufsteigender Reihenfolge sortiert sind, oder dem Wert DESC , wenn die Spalten in absteigender Reihenfolge sortiert sind.

Sort ist ein logischer und physischer Operator.
Teilen Der Split -Operator wird zum Optimieren der Aktualisierungsverarbeitung verwendet. Er teilt jeden Aktualisierungsvorgang in einen Lösch- und einen Einfügevorgang auf.

Split ist ein logischer und physischer Operator.
Spool Mit dem Spool -Operator wird ein Zwischenabfrageergebnis in die tempdb -Datenbank geschrieben.
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 muss die Eingabe innerhalb der Gruppen nach den Spalten sortiert sein. Der Optimierer verwendet vor diesem Operator einen Sortieroperator , wenn die Daten aufgrund eines vorherigen Sortieroperators oder aufgrund einer sortierten Indexsuche oder -überprüfung noch nicht sortiert sind. In der SHOWPLAN_ALL Anweisung oder im grafischen Ausführungsplan in SQL Server Management Studio werden die Spalten in der Gruppe nach Prädikat im Eigenschaftenbereich aufgelistet, und die Aggregatausdrücke werden in der Spalte "Definierte Werte " aufgeführt.

Stream Aggregate ist ein physischer Operator.
Schalter 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 ein logischer und physischer Operator.
Table Delete Der Operator "Tabelle löschen" löscht Zeilen aus der Im Eigenschaftenbereich des Abfrageausführungsplans angegebenen Tabelle.

"Table Delete " ist ein physischer Operator.
Table Insert Der Operator "Tabellen einfügen " fügt Zeilen aus seiner Eingabe in die im Eigenschaftenbereich des Abfrageausführungsplans angegebene Tabelle ein. Der Eigenschaftenbereich enthält auch ein Set-Prädikat , das den Wert angibt, auf den jede Spalte festgelegt ist. 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.
Table Merge Der Table Merge -Operator wendet einen Mergedatenstrom auf einen Heap an. Der Operator löscht, aktualisiert oder fügt Zeilen in der im Eigenschaftenbereich des Operators angegebenen Tabelle ein. Der tatsächliche Vorgang hängt vom Laufzeitwert der ActionColumn-Eigenschaft ab.

Table Merge ist ein physischer Operator.
Table Scan Der Tabellenscan-Operator ruft alle Zeilen aus der Im Eigenschaftenbereich des Abfrageausführungsplans angegebenen Tabelle ab. Wenn ein Prädikat im Eigenschaftenbereich angezeigt wird, werden nur die Zeilen zurückgegeben, die das Prädikat erfüllen.

Table Scan ist ein logischer und physischer Operator.
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 zurückgesetzt wird (beispielsweise aufgrund eines Nested Loops -Operators), aber keine erneute Zuordnung erforderlich ist, werden die gespoolten Daten verwendet, anstatt die Eingabe erneut zu scannen.

Table Spool ist ein physischer Operator.
Table Update Der Operator "Tabellenaktualisierung" aktualisiert Eingabezeilen in der Im Eigenschaftenbereich des Abfrageausführungsplans angegebenen Tabelle. Das Set-Prädikat bestimmt den Wert jeder aktualisierten Spalte. Auf diese Werte kann in der SET Klausel oder an anderer Stelle innerhalb dieses Operators und an anderer Stelle innerhalb dieser Abfrage verwiesen werden.

Die Tabellenaktualisierung ist ein physischer Operator.
Table-valued Function Mit dem Operator Tabellenwertfunktion wird eine Tabellenwertfunktion ausgewertet (entweder Transact-SQL oder CLR), und die Ergebniszeilen werden in der tempdb-Datenbank gespeichert. Wenn die übergeordneten Iteratoren die Zeilen anfordern, gibt die "Table-valued Function " die Zeilen aus tempdb.

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

Der- Tabellenwertfunktion-XML-Leser gibt einen XML-BLOB als Parameter ein und erstellt ein Rowset, das XML-Knoten in der XML-Dokumentreihenfolge darstellt. Andere Eingabeparameter beschränken möglicherweise XML-Knoten, die an eine Teilmenge des XML-Dokuments zurückgegeben werden.

- 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.
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. Der Eigenschaftenbereich kann eine Liste der Spalten enthalten, die auf Verknüpfungen ü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.
Keine Top N Sort Top N Sort ähnelt dem Sort -Iterator. Es werden allerdings nur die ersten N benötigt, und nicht das gesamte Resultset. Für kleine Werte von N versucht das SQL Server-Abfrageausführungsmodul, den gesamten Sortiervorgang im Arbeitsspeicher auszuführen. Bei großen Werten von N greift das Abfrageausführungsmodul auf die generischere Sortiermethode zurück, nach der N kein Parameter ist.
UDX Erweiterte Operatoren (UDX) implementieren eine von vielen XQuery- und XPath-Vorgängen in SQL Server.

- Der erweiterte Operator (UDX) FOR XML wird verwendet, um die relationale Zeile zu serialisieren, die sie in eine XML-Darstellung in einer einzelnen BLOB-Spalte in einer einzelnen Ausgabezeile eingibt. Es handelt sich um einen geordneten vertraulichen XML-Aggregationsoperator.

- DER XML-SERIALIZER (Extended Operator, UDX) ist ein geordneter vertraulicher XML-Aggregationsoperator. 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 ein spezieller TYP von XML SERIALIZER, der für die Verarbeitung von Eingabezeilen verwendet wird, die XML-Fragmente darstellen, die in die XQuery-Erweiterung zum Einfügen von Daten eingefügt werden.

- XQUERY STRING (Extended Operator, UDX) wertet den XQuery-Zeichenfolgenwert von Eingabezeilen aus, die XML-Knoten darstellen. Es handelt sich um einen Zeichenfolgenaggregationsoperator der Reihenfolge. 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, erzeugt sie eine oder mehrere Zeilen, die den XQuery-Skalar darstellen, der einen Listenelementwert enthält, wenn die Eingabe vom XSD-Listentyp ist.

- XQUERY DATA (Extended Operator, UDX) wertet die XQuery-Funktion fn:data() auf Eingaben aus, die XML-Knoten darstellen. Es handelt sich um einen Zeichenfolgenaggregationsoperator der Reihenfolge. Es gibt eine Zeile mit Spalten aus, die XQuery-Skalar darstellen, die das Ergebnis von fn:data().

- Der erweiterte Operator XQUERY CONTAINS wertet die XQuery-Funktion fn:contains() auf Eingaben aus, die XML-Knoten darstellen. Es handelt sich um einen Zeichenfolgenaggregationsoperator der Reihenfolge. Es gibt eine Zeile mit Spalten aus, die XQuery-Skalar darstellen, die das Ergebnis von fn:contains().

– Der ERWEITERTE Operator UPDATE XML NODE aktualisiert den XML-Knoten in der XQuery-Erweiterung zum Ersetzen der Datenänderungserweiterung in der modify() Methode für DEN XML-Typ.

UDX-Operatoren sind logische und physische Operatoren.
Union Der Union -Operator scannt mehrere Eingaben und gibt alle gescannten Zeilen aus, wobei Duplikate entfernt werden.

Union ist ein logischer Operator.
Aktualisieren Der Aktualisierungsoperator aktualisiert jede Zeile aus der Eingabe im Objekt, das im Eigenschaftenbereich des Abfrageausführungsplans angegeben ist.

Update ist ein logischer Operator. Der physische Operator ist Table Update, Index Updateoder Clustered Index Update.
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 in einem Abfrageergebnissatz und eine Fensterfunktion dann einen Wert für jede Zeile im Fenster.

Window Spool ist sowohl ein logischer als auch physischer Operator.

Hinweis

In der SQL Server-Dokumentation wird der Begriff „B-Struktur“ im Allgemeinen in Bezug auf Indizes verwendet. In Zeilenspeicherindizes implementiert SQL Server eine B+-Struktur. Dies gilt nicht für Columnstore-Indizes oder In-Memory-Datenspeicher. Weitere Informationen finden Sie im Leitfaden zur Architektur und zum Entwerfen von SQL Server- und Azure SQL-Indizes.