Guide de référence des opérateurs Showplan logiques et physiquesShowplan Logical and Physical Operators Reference

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Les opérateurs décrivent comment SQL ServerSQL Server exécute une requête ou une instruction DML (Data Manipulation Language).Operators describe how SQL ServerSQL Server executes a query or a Data Manipulation Language (DML) statement. L'optimiseur de requête utilise des opérateurs pour construire un plan de requête qui crée le résultat spécifié dans la requête ou pour exécuter l'opération spécifiée dans l'instruction DML.The query optimizer uses operators to build a query plan to create the result specified in the query, or to perform the operation specified in the DML statement. Le plan de requête est une arborescence composée d'opérateurs physiques.The query plan is a tree consisting of physical operators. Vous pouvez afficher le plan de requête à l'aide des instructions SET SHOWPLAN, des options plan d'exécution graphique dans SQL Server Management StudioSQL Server Management Studioou des classes d'événements Showplan de SQL Server Profiler.You can view the query plan by using the SET SHOWPLAN statements, the graphical execution plan options in SQL Server Management StudioSQL Server Management Studio, or the SQL Server Profiler Showplan event classes.

Les opérateurs sont classés en opérateurs logiques et physiques.Operators are classified as logical and physical operators.

Opérateurs logiquesLogical Operators
Les opérateurs logiques décrivent l'opération algébrique relationnelle utilisée pour traiter une instruction.Logical operators describe the relational algebraic operation used to process a statement. En d'autres termes, les opérateurs logiques décrivent de manière conceptuelle les opérations à exécuter.In other words, logical operators describe conceptually what operation needs to be performed.

Opérateurs physiquesPhysical Operators
Les opérateurs physiques mettent en œuvre l'opération décrite par des opérateurs logiques.Physical operators implement the operation described by logical operators. Chaque opérateur physique désigne un objet ou une routine chargée d'effectuer une opération.Each physical operator is an object or routine that performs an operation. Par exemple, certains opérateurs physiques permettent d'accéder à des colonnes ou des lignes à partir d'une table, d'un index ou d'une vue.For example, some physical operators access columns or rows from a table, index or view. D'autres opérateurs physiques exécutent d'autres opérations telles que des calculs, des agrégations, des contrôles de l'intégrité des données vérifie ou des jointures.Other physical operators perform other operations such as calculations, aggregations, data integrity checks or joins. Des coûts sont associés aux opérateurs physiques.Physical operators have costs associated with them.

Les opérateurs physiques s'initialisent, collectent des données et se ferment.The physical operators initialize, collect data, and close. En particulier, l'opérateur physique peut répondre aux trois méthodes d'appel suivantes :Specifically, the physical operator can answer the following three method calls:

  • Init(): La méthode Init() fait qu’un opérateur physique s’initialise lui-même et configure les structures de données nécessaires.Init(): The Init() method causes a physical operator to initialize itself and set up any required data structures. Il arrive que l’opérateur physique reçoive beaucoup d’appels Init() , bien qu’en général il n’en reçoive qu’un.The physical operator may receive many Init() calls, though typically a physical operator receives only one.

  • GetNext(): La méthode GetNext() fait que l’opérateur physique récupère la première ligne de données ou la suivante.GetNext(): The GetNext() method causes a physical operator to get the first, or subsequent row of data. L’opérateur physique peut recevoir zéro ou de nombreux appels GetNext() .The physical operator may receive zero or many GetNext() calls.

  • Close()  : La méthode Close() fait que l’opérateur physique effectue certaines opérations de nettoyage et se ferme elle-même.Close(): The Close() method causes a physical operator to perform some clean-up operations and shut itself down. Un opérateur physique reçoit un seul appel Close() .A physical operator only receives one Close() call.

La méthode GetNext() renvoie une ligne de données, et le nombre d’appels qu’elle reçoit s’affiche sous ActualRows dans le résultat Showplan produit au moyen de SET STATISTICS PROFILE ON ou SET STATISTICS XML ON.The GetNext() method returns one row of data, and the number of times it is called appears as ActualRows in the Showplan output that is produced by using SET STATISTICS PROFILE ON or SET STATISTICS XML ON. Pour plus d’informations sur ces options SET, consultez SET STATISTICS PROFILE (Transact-SQL) et SET STATISTICS XML (Transact-SQL).For more information about these SET options, see SET STATISTICS PROFILE (Transact-SQL) and SET STATISTICS XML (Transact-SQL).

Les compteurs ActualRebinds et ActualRewinds qui s’affichent dans le résultat de Showplan indiquent le nombre de fois que la méthode Init() est appelée.The ActualRebinds and ActualRewinds counts that appear in Showplan output refer to the number of times that the Init() method is called. Sauf si un opérateur se trouve sur le côté intérieur d'une jointure de boucles, ActualRebinds est égal à un et ActualRewinds est égal à zéro.Unless an operator is on the inner side of a loop join, ActualRebinds equals one and ActualRewinds equals zero. Si un opérateur se trouve sur le côté intérieur d'une jointure de boucles, le nombre total de reliaisons et de rembobinages doit être égal au nombre de ligne traitées sur le côté extérieur de la jointure.If an operator is on the inner side of a loop join, the sum of the number of rebinds and rewinds should equal the number of rows processed on the outer side of the join. Une reliaison signifie qu'un ou plusieurs des paramètres corrélés de la jointure ont changé, et que le côté intérieur doit être réévalué.A rebind means that one or more of the correlated parameters of the join changed and the inner side must be reevaluated. Un rembobinage signifie qu'aucun des paramètres corrélés n'a changé, et que l'ancien jeu de résultats interne peut être réutilisé.A rewind means that none of the correlated parameters changed and the prior inner result set may be reused.

ActualRebinds et ActualRewinds sont présents dans le résultat de Showplan XML produit en utilisant SET STATISTICS XML ON.ActualRebinds and ActualRewinds are present in XML Showplan output produced by using SET STATISTICS XML ON. Ils ne sont remplis que pour les opérateurs Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spoolet Table-valued Function .They are only populated for the Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool, and Table-valued Function operators. ActualRebinds et ActualRewinds peuvent aussi être remplis pour les opérateurs Assert et Filter lorsque l'attribut StartupExpression est défini à TRUE.ActualRebinds and ActualRewinds may also be populated for the Assert and Filter operators when the StartupExpression attribute is set to TRUE.

Lorsque ActualRebinds et ActualRewinds sont présents dans un Showplan XML, ils sont comparables à EstimateRebinds et EstimateRewinds.When ActualRebinds and ActualRewinds are present in an XML Showplan, they are comparable to EstimateRebinds and EstimateRewinds. S’ils sont absents, le nombre estimé de lignes (EstimateRows) est comparable au nombre réel de lignes (ActualRows).When they are absent, the estimated number of rows (EstimateRows) is comparable to the actual number of rows (ActualRows). Sachez que le résultat du Showplan graphique réel affiche des zéros pour les reliaisons réelles et les rembobinages réels lorsqu'ils sont absents.Note that actual graphical Showplan output displays zeros for the actual rebinds and actual rewinds when they are absent.

Un compteur apparenté, ActualEndOfScans, est disponible uniquement si le résultat de Showplan est produit au moyen de SET STATISTICS XML ON.A related counter, ActualEndOfScans, is available only when Showplan output is produced by using SET STATISTICS XML ON. Chaque fois qu'un opérateur physique atteint la fin de son flux de données, le compteur est incrémenté de un.Whenever a physical operator reaches the end of its data stream, this counter is incremented by one. Un opérateur physique peut atteindre la fin de son flux de données zéro, une ou de nombreuses fois.A physical operator can reach the end of its data stream zero, one, or multiple times. Comme pour les reliaisons et les rembobinages, le nombre de fins d'analyses ne peut être supérieur à un que si l'opérateur se situe sur le côté intérieur d'une jointure de boucles.As with rebinds and rewinds, the number of end of scans can be more than one only if the operator is on the inner side of a loop join. Le nombre de fins d'analyses doit être inférieur ou égal au nombre total des reliaisons et des rembobinages.The number of end of scans should be less than or equal to the sum of the number of rebinds and rewinds.

Mappage d'opérateurs physiques et logiquesMapping Physical and Logical Operators

L'optimiseur de requête crée un plan de requête sous forme d'arborescence d'opérateurs logiques.The query optimizer creates a query plan as a tree consisting of logical operators. Après avoir créé le plan, l'optimiseur de requête choisit l'opérateur physique le plus efficace pour chaque opérateur logique.After the query optimizer creates the plan, the query optimizer chooses the most efficient physical operator for each logical operator. L'optimiseur de requête utilise une approche basée sur les coûts pour déterminer l'opérateur physique qui mettra en œuvre un opérateur logique.The query optimizer uses a cost-based approach to determine which physical operator will implement a logical operator.

Généralement, une opération logique peut être mise en œuvre par plusieurs opérateurs physiques.Usually, a logical operation can be implemented by multiple physical operators. Toutefois, en de rares occasions, un opérateur physique peut également mettre en œuvre plusieurs opérations logiques.However, in rare cases, a physical operator can implement multiple logical operations as well.

Description des opérateursOperator Descriptions

Cette section contient la description des opérateurs logiques et physiques.This section contains descriptions of the logical and physical operators.

Icône du plan d'exécution graphiqueGraphical Execution Plan Icon Opérateur ShowplanShowplan Operator DescriptionDescription
Icône d’opérateur de jointure adaptativeAdaptive Join operator icon Jointure adaptativeAdaptive Join L’opérateur de jointure adaptative permet de choisir de différer une jointure hachée ou une méthode de jointure de boucles imbriquées tant que la première entrée n’a pas été analysée.The Adaptive Join operator enables the choice of a hash join or nested loop join method to be deferred until the after the first input has been scanned.
NoneNone AgrégatAggregate L'opérateur Aggregate calcule une expression contenant MIN, MAX, SUM, COUNT ou AVG.The Aggregate operator calculates an expression containing MIN, MAX, SUM, COUNT or AVG. L'opérateur Aggregate peut être un opérateur logique ou physique.The Aggregate operator can be a logical operator or a physical operator.
Icône d’opérateur Arithmetic ExpressionArithmetic expression operator icon Arithmetic ExpressionArithmetic Expression L'opérateur Arithmetic Expression calcule une nouvelle valeur à partir de valeurs existantes dans une ligne.The Arithmetic Expression operator computes a new value from existing values in a row. L’opérateurArithmetic Expression n’est pas utilisé dans SQL Server 2017SQL Server 2017.Arithmetic Expression is not used in SQL Server 2017SQL Server 2017.
NoneNone Async ConcatAsync Concat L’opérateur Async Concat est utilisé seulement dans les requêtes distantes (requêtes distribuées).The Async Concat operator is used only in remote queries (distributed queries). Elle a n enfants et un nœud parent.It has n children and one parent node. En règle générale, certains des enfants sont des ordinateurs distants qui participent à une requête distribuée.Usually, some of the children are remote computers that participate in a distributed query. Async Concat émet des appels open() à tous les enfants simultanément et applique ensuite une bitmap à chacun d’eux.Async Concat issues open() calls to all of the children simultaneously and then applies a bitmap to each child. Pour chaque bit à 1, Async Concat envoie à la demande les lignes obtenues au nœud parent.For each bit that is a 1, Async Concat sends the output rows to the parent node on demand.
Icône d’opérateur AssertAssert operator icon AssertAssert L'opérateur Assert vérifie une condition.The Assert operator verifies a condition. Par exemple, il valide l'intégrité référentielle ou garantit qu'une sous-requête scalaire retourne une ligne.For example, it validates referential integrity or ensures that a scalar subquery returns one row. Pour chaque ligne d'entrée, l'opérateur Assert résout l'expression de la colonne Argument du plan d'exécution.For each input row, the Assert operator evaluates the expression in the Argument column of the execution plan. Si cette expression a pour résultat NULL, l'opérateur Assert passe la ligne et la requête d'exécution se poursuit.If this expression evaluates to NULL, the row is passed through the Assert operator and the query execution continues. Si cette expression a pour résultat une valeur non NULL, l'erreur correspondante est levée.If this expression evaluates to a nonnull value, the appropriate error will be raised. L'opérateur Assert est un opérateur physique.The Assert operator is a physical operator.
Icône de l’élément de langage AssignAssign language element icon AssignAssign L'opérateur Assign assigne la valeur d'une expression ou une constante à une variable.The Assign operator assigns the value of an expression or a constant to a variable. Assign est un élément de langage.Assign is a language element.
Icône d’opérateur BitmapBitmap operator icon Bitmap CreateBitmap Create L'opérateur Bitmap Create apparaît dans la sortie de plan d'exécution de requêtes où les bitmaps sont construites.The Bitmap Create operator appears in the Showplan output where bitmaps are built. Bitmap Create est un opérateur logique.Bitmap Create is a logical operator.
Icône d’opérateur BitmapBitmap operator icon BitmapBitmap SQL ServerSQL Server utilise l’opérateur Bitmap pour implémenter le filtrage Bitmap dans les plans de requête parallèles.uses the Bitmap operator to implement bitmap filtering in parallel query plans. Le filtrage Bitmap accélère l'exécution des requêtes en éliminant les lignes contenant des valeurs de clés qui ne peuvent pas produire d'enregistrements de jointure avant de transmettre les lignes à un autre opérateur tel que l'opérateur Parallelism .Bitmap filtering speeds up query execution by eliminating rows with key values that cannot produce any join records before passing rows through another operator such as the Parallelism operator. Un filtre Bitmap utilise une représentation compacte d'un ensemble de valeurs d'une table dans une partie de l'arborescence de l'opérateur pour filtrer les lignes d'une seconde table dans une autre partie de l'arborescence.A bitmap filter uses a compact representation of a set of values from a table in one part of the operator tree to filter rows from a second table in another part of the tree. Avec la suppression des lignes inutiles tôt dans la requête, les opérateurs suivants ont moins de lignes à traiter et les performances globales de la requête sont améliorées.By removing unnecessary rows early in the query, subsequent operators have fewer rows to work with, and the overall performance of the query improves. L'optimiseur détermine quand un filtre Bitmap est suffisamment sélectif pour être utile et dans quels opérateurs le filtre doit être appliqué.The optimizer determines when a bitmap is selective enough to be useful and in which operators to apply the filter. Bitmap est un opérateur physique.Bitmap is a physical operator.
Icône d’opérateur Bookmark LookupBookmark lookup operator icon Bookmark LookupBookmark Lookup L’opérateur Bookmark Lookup utilise un signet (ID de ligne ou clé de clustering) pour rechercher la ligne correspondante dans la table ou l’index cluster.The Bookmark Lookup operator uses a bookmark (row ID or clustering key) to look up the corresponding row in the table or clustered index. La colonne Argument contient l'étiquette de signet utilisée pour rechercher la ligne dans la table ou l'index cluster.The Argument column contains the bookmark label used to look up the row in the table or clustered index. La colonne Argument contient également le nom de la table ou de l’index cluster où s’effectue la recherche de la ligne.The Argument column also contains the name of the table or clustered index in which the row is looked up. Si la clause WITH PREFETCH apparaît dans la colonne Argument , cela signifie que le processeur de requêtes a décidé que la prérécupération asynchrone (lecture anticipée) constitue la solution optimale pour la recherche de signets dans la table ou dans l’index cluster.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the table or clustered index.

À compter de SQL Server 2005 (9.x)SQL Server 2005 (9.x), Bookmark Lookup n’est pas utilisé.Starting with SQL Server 2005 (9.x)SQL Server 2005 (9.x), Bookmark Lookup is not used. Au lieu de cela, Key Lookup et RID Lookup fournissent les fonctionnalités de recherche de signet.Instead, Key Lookup and RID Lookup provide bookmark lookup functionality.
NoneNone Branch RepartitionBranch Repartition Dans un plan de requête parallèle, il existe parfois des régions conceptuelles composées d'itérateurs.In a parallel query plan, sometimes there are conceptual regions of iterators. Tous les itérateurs de ces régions peuvent être exécutés par des threads parallèles.All of the iterators within such a region can be executed by parallel threads. Les régions elles-mêmes doivent être exécutées séquentiellement.The regions themselves must be executed serially. Certains itérateurs Parallelism d'une région distincte sont appelés Branch Repartition.Some of the Parallelism iterators within an individual region are called Branch Repartition. L'itérateur Parallelism situé à la limite de deux régions de ce type est appelé Segment Repartition.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch Repartition et Segment Repartition sont des opérateurs logiques.Branch Repartition and Segment Repartition are logical operators.
NoneNone BroadcastBroadcast Broadcast comporte un nœud enfant et n nœuds parents.Broadcast has one child node and n parent nodes. Broadcast envoie ses lignes d'entrée à plusieurs consommateurs à la demande.Broadcast sends its input rows to multiple consumers on demand. Chaque consommateur obtient toutes les lignes.Each consumer gets all of the rows. Par exemple, si tous les consommateurs se trouvent des côtés construction d'une jointure de hachage, n copies des tables de hachage sont générées.For example, if all of the consumers are build sides of a hash join, then n copies of the hash tables will be built.
Icône d’opérateur Build HashBuild hash operator icon Build HashBuild Hash Indique la création d'une table de hachage de lot pour un index columnstore optimisé en mémoire xVelocity.Indicates the build of a batch hash table for an xVelocity memory optimized columnstore index.
NoneNone CacheCache Cache est une version spéciale de l'opérateur Spool .Cache is a specialized version of the Spool operator. Il ne stocke qu'une seule ligne de données.It stores only one row of data. Cache est un opérateur logique.Cache is a logical operator. Cache n'est pas utilisé dans SQL Server 2017SQL Server 2017.Cache is not used in SQL Server 2017SQL Server 2017.
Icône d’opérateur Clustered Index DeleteClustered index delete operator icon Clustered Index DeleteClustered Index Delete L’opérateur Clustered Index Delete supprime des lignes de l’index cluster spécifié dans la colonne Argument du plan d’exécution de requête.The Clustered Index Delete operator deletes rows from the clustered index specified in the Argument column of the query execution plan. Si un prédicat WHERE:() figure dans la colonne Argument, seules les lignes répondant au prédicat sont supprimées.Clustered Index Delete est un opérateur physique.If a WHERE:() predicate is present in the Argument column, then only those rows that satisfy the predicate are deleted.Clustered Index Delete is a physical operator.
Icône d’opérateur Clustered Index InsertClustered index insert operator icon Clustered Index InsertClustered Index Insert L’opérateur Clustered Index Insert Showplan insère des lignes de son entrée dans l’index cluster spécifié dans la colonne Argument.The Clustered Index Insert Showplan operator inserts rows from its input into the clustered index specified in the Argument column. Cette colonne contient également un prédicat SET:(), qui indique la valeur à laquelle chaque colonne est définie.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Si Clustered Index Insert ne possède pas d'enfant pour les valeurs insert, la ligne insérée est extraite de l'opérateur Insert lui-même.Clustered Index Insert est un opérateur physique.If Clustered Index Insert has no children for insert values, the row inserted is taken from the Insert operator itself.Clustered Index Insert is a physical operator.
Icône d’opérateur Clustered Index MergeClustered index merge operator Clustered Index MergeClustered Index Merge L'opérateur Clustered Index Merge applique un flux de données de fusion à un index cluster.The Clustered Index Merge operator applies a merge data stream to a clustered index. L'opérateur supprime, met à jour ou insère des lignes de l'index cluster spécifié dans la colonne Argument de l'opérateur.The operator deletes, updates, or inserts rows from the clustered index specified in the Argument column of the operator. L'opération réellement effectuée dépend de la valeur d'exécution de la colonne ACTION spécifiée dans la colonne Argument de l'opérateur.The actual operation performed depends on the runtime value of the ACTION column specified in the Argument column of the operator. Clustered Index Merge est un opérateur physique.Clustered Index Merge is a physical operator.
Icône d’opérateur Clustered Index ScanClustered index scan operator icon Clustered Index ScanClustered Index Scan L’opérateur Clustered Index Scan analyse l’index cluster spécifié dans la colonne Argument du plan d’exécution de requête.The Clustered Index Scan operator scans the clustered index specified in the Argument column of the query execution plan. Lorsqu'un prédicat facultatif WHERE:() y figure, seules les lignes répondant au prédicat sont retournées.When an optional WHERE:() predicate is present, only those rows that satisfy the predicate are returned. Si la colonne Argument contient la clause ORDERED, cela signifie que le processeur de requêtes a demandé le renvoi des sorties de lignes dans l'ordre dans lequel l'index cluster les a triées.If the Argument column contains the ORDERED clause, the query processor has requested that the output of the rows be returned in the order in which the clustered index has sorted it. Si la clause ORDERED n'y figure pas, le moteur de stockage effectue la recherche dans l'index de façon optimale, sans nécessairement trier la sortie.If the ORDERED clause is not present, the storage engine scans the index in the optimal way, without necessarily sorting the output. Clustered Index Scan est un opérateur logique et physique.Clustered Index Scan is a logical and physical operator.
Icône d’opérateur Clustered Index SeekClustered index seek operator icon Clustered Index SeekClustered Index Seek L'opérateur Clustered Index Seek utilise la fonction recherche des index pour extraire des lignes d'un index cluster.The Clustered Index Seek operator uses the seeking ability of indexes to retrieve rows from a clustered index. La colonne Argument contient le nom de l’index cluster utilisé et le prédicat SEEK:().The Argument column contains the name of the clustered index being used and the SEEK:() predicate. Le moteur de stockage utilise l'index pour ne traiter que les lignes répondant à ce prédicat SEEK:().The storage engine uses the index to process only those rows that satisfy this SEEK:() predicate. Il peut également inclure un prédicat WHERE: () dans lequel le moteur de stockage est évalué par rapport à toutes les lignes répondant au prédicat SEEK:(), mais ceci est facultatif et ne fait pas appel aux index pour exécuter ce processus.It can also include a WHERE:() predicate where the storage engine evaluates against all rows that satisfy the SEEK:() predicate, but this is optional and does not use indexes to complete this process.

Si la colonne Argument contient la clause ORDERED, le processeur de requêtes a déterminé que les lignes doivent être retournées dans l'ordre dans lequel l'index cluster les a triées.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the clustered index has sorted them. Si la clause ORDERED n'y figure pas, le moteur de stockage effectue la recherche dans l'index de façon optimale, sans nécessairement trier la sortie.If the ORDERED clause is not present, the storage engine searches the index in the optimal way, without necessarily sorting the output. Autoriser la sortie à conserver son classement peut s'avérer moins efficace que la production d'une sortie non triée.Allowing the output to retain its ordering can be less efficient than producing nonsorted output. Lorsque le mot clé LOOKUP apparaît, une recherche de signet est alors exécutée.When the keyword LOOKUP appears, then a bookmark lookup is being performed. Dans SQL Server 2008SQL Server 2008 et les versions ultérieures, l'opérateur Key Lookup fournit la fonctionnalité de recherche de signet.In SQL Server 2008SQL Server 2008 and later versions, the Key Lookup operator provides bookmark lookup functionality. Clustered Index Seek est un opérateur logique et physique.Clustered Index Seek is a logical and physical operator.
Icône d’opérateur Clustered Index UpdateClustered index update operator icon Clustered Index UpdateClustered Index Update L’opérateur Clustered Index Update met à jour les lignes d’entrée dans l’index cluster spécifié dans la colonne Argument . Si un prédicat WHERE:() est présent, seules les lignes répondant à ce prédicat sont mises à jour.The Clustered Index Update operator updates input rows in the clustered index specified in the Argument column.If a WHERE:() predicate is present, only those rows that satisfy this predicate are updated. Si un prédicat SET:() est présent, chaque colonne mise à jour prend cette valeur.If a SET:() predicate is present, each updated column is set to this value. Si un prédicat DEFINE:() est présent, il établit la liste des valeurs définies par cet opérateur.If a DEFINE:() predicate is present, the values that this operator defines are listed. Ces valeurs peuvent être référencées dans la clause SET ou ailleurs dans cet opérateur, et ailleurs dans cette requête.These values may be referenced in the SET clause or elsewhere within this operator and elsewhere within this query. Clustered Index Update est un opérateur logique et physique.Clustered Index Update is a logical and physical operator.
Icône d’opérateur CollapseCollapse operator icon CollapseCollapse L'opérateur Collapse permet d'optimiser le traitement de mise à jour des données.The Collapse operator optimizes update processing. Lorsqu’une mise à jour est effectuée, elle peut être divisée (par l’opérateur Split ) en opérations de suppression puis d’insertion de données.When an update is performed, it can be split (using the Split operator) into a delete and an insert. La colonne Argument contient une clause GROUP BY:() qui spécifie la liste des colonnes clés.The Argument column contains a GROUP BY:() clause that specifies a list of key columns. Si le processeur de requêtes rencontre des lignes adjacentes d'instructions de suppression puis d'insertion des mêmes valeurs de clé, il regroupe alors ces opérations en une seule et même opération de mise à jour pour gagner en efficacité.If the query processor encounters adjacent rows that delete and insert the same key values, it replaces these separate operations with a single more efficient update operation. Collapse est un opérateur logique et physique.Collapse is a logical and physical operator.
Analyse d'index columnstoreColumnstore Index Scan Analyse d'index columnstoreColumnstore Index Scan L'opérateur Columnstore Index Scan analyse l'index columnstore spécifié dans la colonne Argument du plan d'exécution de requête.The Columnstore Index Scan operator scans the columnstore index specified in the Argument column of the query execution plan.
Icône d’opérateur Compute ScalarCompute scalar operator icon Compute ScalarCompute Scalar L'opérateur Compute Scalar évalue une expression pour produire une valeur scalaire calculée.The Compute Scalar operator evaluates an expression to produce a computed scalar value. Celle-ci peut ensuite être retournée à l'utilisateur, référencée n'importe où dans la requête, ou les deux.This may then be returned to the user, referenced elsewhere in the query, or both. Les deux sont utilisés par exemple dans un prédicat de filtre ou de jointure.An example of both is in a filter predicate or join predicate. Compute Scalar est un opérateur logique et physique.Compute Scalar is a logical and physical operator.

Il se peut que les opérateursCompute Scalar qui apparaissent dans les plans d'exécution générés par SET STATISTICS XML ne contiennent pas l'élément RunTimeInformation .Compute Scalar operators that appear in Showplans generated by SET STATISTICS XML might not contain the RunTimeInformation element. Dans les plans d'exécution graphiques, Actual Rows, Actual Rebindset Actual Rewinds peuvent être absents de la fenêtre Propriétés lorsque l'option Inclure le plan d'exécution réel est sélectionnée dans SQL Server Management StudioSQL Server Management Studio.In graphical Showplans, Actual Rows, Actual Rebinds, and Actual Rewinds might be absent from the Properties window when the Include Actual Execution Plan option is selected in SQL Server Management StudioSQL Server Management Studio. Si cela se produit, cela signifie que, même si ces opérateurs ont été utilisés dans le plan de requête compilé, leur travail a été exécuté par d'autres opérateurs dans le plan de requête à l'exécution.When this occurs, it means that although these operators were used in the compiled query plan, their work was performed by other operators in the run-time query plan. Notez également que le nombre d'exécutions figurant dans le résultat du plan d'exécution produit par SET STATISTICS PROFILE équivaut à la somme des reliaisons et des rembobinages des plans d'exécution produits par SET STATISTICS XML.Also note that the number of executes in Showplan output generated by SET STATISTICS PROFILE is equivalent to the sum of rebinds and rewinds in Showplans generated by SET STATISTICS XML.
Icône d’opérateur ConcatenationConcatenation operator icon ConcatenationConcatenation L'opérateur Concatenation analyse plusieurs entrées et renvoie chaque ligne analysée.The Concatenation operator scans multiple inputs, returning each row scanned. L'opérateurConcatenation sert généralement à implémenter la construction Transact-SQLTransact-SQL UNION ALL.Concatenation is typically used to implement the Transact-SQLTransact-SQL UNION ALL construct. L'opérateur physique Concatenation a deux entrées ou plus, et une sortie.The Concatenation physical operator has two or more inputs and one output. L'opérateur Concatenation copie des lignes depuis le premier flux d'entrée vers le flux de sortie, puis répète l'opération pour chacun des autres flux d'entrée.Concatenation copies rows from the first input stream to the output stream, then repeats this operation for each additional input stream. Concatenation est un opérateur logique et physique.Concatenation is a logical and physical operator.
Icône d’opérateur Constant ScanConstant scan operator icon Constant ScanConstant Scan L'opérateur Constant Scan introduit une ou plusieurs lignes de constante dans une requête.The Constant Scan operator introduces one or more constant rows into a query. Un opérateur Compute Scalar est souvent utilisé après un opérateur Constant Scan pour ajouter des colonnes à une ligne produite par l'opérateur Constant Scan .A Compute Scalar operator is often used after a Constant Scan to add columns to a row produced by the Constant Scan operator.
Icône de l’élément de langage Convert (moteur de base de données)Convert (Database Engine) language element icon ConvertConvert L'opérateur Convert convertit une expression d'un type de données scalaire en un autre.The Convert operator converts one scalar data type to another. Convert est un élément de langage.Convert is a language element.
NoneNone Cross JoinCross Join L’opérateur Cross Join relie chaque ligne de la première entrée (du haut) à chaque ligne de la deuxième entrée (du bas).The Cross Join operator joins each row from the first (top) input with each row from the second (bottom) input. Cross Join est un opérateur logique.Cross Join is a logical operator.
NoneNone CurseurCursor Les opérateurs physiques et logiques de curseur sont utilisés pour décrire le mode d'exécution d'une requête ou d'une mise à jour impliquant des opérations de curseur.The Cursor logical and physical operators are used to describe how a query or update involving cursor operations is executed. Les opérateurs physiques décrivent l'algorithme d'implémentation physique utilisé pour traiter le curseur, par exemple, à l'aide d'un curseur contrôlé par clés.The physical operators describe the physical implementation algorithm used to process the cursor; for example, using a keyset-driven cursor. Chaque étape de l'exécution d'un curseur implique un opérateur physique.Each step in the execution of a cursor involves a physical operator. Les opérateurs logiques décrivent une propriété du curseur, par exemple, le curseur est en lecture seule.The logical operators describe a property of the cursor, such as the cursor is read only.

Les opérateurs logiques incluent Asynchronous, Optimistic, Primary, Read Only, Scroll Locks et Secondary et Synchronous.Logical operators include Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, and Secondary and Synchronous.

Les opérateurs physiques incluent Dynamic, Fetch Query, Keyset, Population Query, Refresh Query et Snapshot.Physical operators include Dynamic, Fetch Query, Keyset, Population Query, Refresh Query and Snapshot.
Icône d’opérateur Cursor CatchallCursor catchall cursor operator icon catchallcatchall L'icône catchall s'affiche lorsque la logique qui produit des plans de requête graphiques ne parvient pas à trouver une icône adaptée pour l'itérateur.The catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical showplans. Cette icône n'indique pas nécessairement une condition d'erreur.The catchall icon does not necessarily indicate an error condition. Il existe trois types d'icône catchcall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les éléments du langage Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language elements).
Icône de l’élément de langage DeclareDeclare language element icon DeclareDeclare L’opérateur Declare alloue une variable locale dans le plan de requête.The Declare operator allocates a local variable in the query plan. Declare est un élément de langage.Declare is a language element.
Icône d’opérateur Delete (moteur de base de données)Delete (Database Engine) operator icon SupprimerDelete L'opérateur Delete supprime d'un objet les lignes qui répondent au prédicat facultatif de la colonne Argument .The Delete operator deletes from an object rows that satisfy the optional predicate in the Argument column.
Icône d’opérateur Delete ScanDelete scan operator icon Deleted ScanDeleted Scan L'opérateur Deleted Scan analyse la table supprimée dans un déclencheur.The Deleted Scan operator scans the deleted table within a trigger.
NoneNone Distinct SortDistinct Sort L’opérateur logique Distinct Sort analyse les entrées en éliminant les doublons et en triant les colonnes spécifiées dans le prédicat DISTINCT ORDER BY:() de la colonne Argument .The Distinct Sort logical operator scans the input, removing duplicates and sorting by the columns specified in the DISTINCT ORDER BY:() predicate of the Argument column. Distinct Sort est un opérateur logique.Distinct Sort is a logical operator.
NoneNone DistinctDistinct L'opérateur Distinct supprime les doublons d'un ensemble de lignes ou d'une collection de valeurs.The Distinct operator removes duplicates from a rowset or from a collection of values. Distinct est un opérateur logique.Distinct is a logical operator.
Icône d’opérateur de parallélisme Distribute StreamsDistribute streams parallelism operator icon Distribute StreamsDistribute Streams L'opérateur Distribute Streams est utilisé uniquement dans les plans de requête parallèles.The Distribute Streams operator is used only in parallel query plans. L'opérateur Distribute Streams ne mobilise qu'un seul flux d'entrée d'enregistrements et produit plusieurs flux de sortie.The Distribute Streams operator takes a single input stream of records and produces multiple output streams. Le contenu et le format des enregistrements ne sont pas modifiés.The record contents and format are not changed. Chaque enregistrement provenant du flux d'entrée apparaît dans l'un des flux de sortie.Each record from the input stream appears in one of the output streams. Cet opérateur conserve automatiquement l'ordre relatif des enregistrements d'entrée dans les flux de sortie.This operator automatically preserves the relative order of the input records in the output streams. Habituellement, le hachage est utilisé pour définir à quel flux de sortie appartient un enregistrement d'entrée particulier.Usually, hashing is used to decide to which output stream a particular input record belongs.

Si la sortie est partitionnée, la colonne Argument contient alors un prédicat PARTITION COLUMNS:() et les colonnes de partitionnement.If the output is partitioned, then the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns. Distribute Streams est un opérateur logique.Distribute Streams is a logical operator
Icône d’opérateur de curseur DynamicDynamic cursor operator icon DynamicDynamic L'opérateur Dynamic utilise un curseur capable de détecter toutes les modifications effectuées par d'autres utilisateurs.The Dynamic operator uses a cursor that can see all changes made by others.
Icône d’opérateur de curseur Fetch QueryFetch query cursor operator icon Fetch QueryFetch Query L'opérateur Fetch Query extrait des lignes lorsqu'une extraction est émise à l'aide d'un curseur.The Fetch Query operator retrieves rows when a fetch is issued against a cursor.
Icône d’opérateur Filter (moteur de base de données)Filter (Database Engine) operator icon FilterFilter L’opérateur Filter analyse l’entrée en ne retournant que les lignes répondant à l’expression du filtre (prédicat) qui apparaît dans la colonne Argument .The Filter operator scans the input, returning only those rows that satisfy the filter expression (predicate) that appears in the Argument column.
NoneNone Flow DistinctFlow Distinct L'opérateur logique Flow Distinct analyse les entrées en éliminant les doublons.The Flow Distinct logical operator scans the input, removing duplicates. Alors que l’opérateur Distinct mobilise l’intégralité des entrées avant de produire une sortie, l’opérateur FlowDistinct retourne chaque ligne à mesure qu’il l’obtient de l’entrée (sauf si la ligne est un doublon, auquel cas elle est supprimée).Whereas the Distinct operator consumes all input before producing any output, the FlowDistinct operator returns each row as it is obtained from the input (unless that row is a duplicate, in which case it is discarded).
Icône de l’opérateur Vérification des références de clé étrangèreForeign key references check operator icon Vérification des références de clé étrangèreForeign Key References Check L’opérateur Vérification des références de clé étrangère effectue des vérifications de l’intégrité référentielle sur place, en comparant la ligne modifiée aux lignes des tables de référence, pour vérifier que la modification ne rompt pas l’intégrité référentielle.The Foreign Key References Check operator performs referential integrity checks in place, by comparing the modified row to the rows in the referencing tables to verify that the modification will not break the referential integrity. L’opérateur Vérification des références de clé étrangère est utilisé quand il existe plus de 253 références de clés étrangères sur la même clé primaire ou unique.The Foreign Key References Check operator is used when more than 253 foreign key references exist on the same primary or unique key. Vérification des références de clé étrangère est un opérateur logique et physique.Foreign Key References Check is a logical and physical operator.
NoneNone Full Outer JoinFull Outer Join L’opérateur logique Full Outer Join retourne chaque ligne répondant au prédicat de jointure de la première entrée (du haut) joint à chaque ligne de la seconde entrée (du bas).The Full Outer Join logical operator returns each row satisfying the join predicate from the first (top) input joined with each row from the second (bottom) input. Il renvoie également les lignes de :It also returns rows from:

-la première entrée qui ne possède pas de correspondance dans la seconde entrée ;-The first input that had no matches in the second input.

-la seconde entrée sans correspondance dans la première entrée.-The second input that had no matches in the first input.

L'entrée qui ne contient pas les valeurs correspondantes est retournée sous forme de valeur NULL.The input that does not contain the matching values is returned as a null value. Full Outer Join est un opérateur logique.Full Outer Join is a logical operator.
Icône d’opérateur de parallélisme Gather StreamsGather streams parallelism operator icon Gather StreamsGather Streams L'opérateur Gather Streams n'est utilisé que dans les plans de requête parallèle.The Gather Streams operator is only used in parallel query plans. Cet opérateur mobilise plusieurs flux d'entrée et ne produit qu'un flux de sortie d'enregistrements en associant les flux d'entrée.The Gather Streams operator consumes several input streams and produces a single output stream of records by combining the input streams. Le contenu et le format des enregistrements ne sont pas modifiés.The record contents and format are not changed. Si l'opérateur conserve l'ordre, tous les flux d'entrée doivent alors être classés.If this operator is order preserving, all input streams must be ordered. Si la sortie est triée, la colonne Argument contient un prédicat ORDER BY:() et les noms des colonnes classées.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the names of columns being ordered. Gather Streams est un opérateur logique.Gather Streams is a logical operator.
Icône d’opérateur Hash MatchHash match operator icon Hash MatchHash Match L'opérateur Hash Match crée une table de hachage en calculant une valeur de hachage pour chaque ligne à partir de son entrée de génération.The Hash Match operator builds a hash table by computing a hash value for each row from its build input. Un prédicat HASH:() accompagné d’une liste de colonnes utilisées pour créer une valeur de hachage apparaît dans la colonne Argument .A HASH:() predicate with a list of columns used to create a hash value appears in the Argument column. Ensuite, il calcule, pour chaque ligne de sondage (le cas échéant), une valeur de hachage en utilisant la même fonction de hachage, et consulte la table de hachage pour trouver les correspondances.Then, for each probe row (as applicable), it computes a hash value (using the same hash function) and looks in the hash table for matches. Si un prédicat résiduel (identifié par RESIDUAL:() dans la colonne Argument ) y figure, il doit également trouver les lignes qui doivent lui correspondre.If a residual predicate is present (identified by RESIDUAL:() in the Argument column), that predicate must also be satisfied for rows to be considered a match. Son comportement dépend de l'opération logique exécutée :Behavior depends on the logical operation being performed:

-Pour toutes les jointures, utilisez la première entrée (du haut) pour créer la table de hachage, et la seconde entrée (du bas) pour tester cette table.-For any joins, use the first (top) input to build the hash table and the second (bottom) input to probe the hash table. Les correspondances (ou non correspondances) de sortie sont dictées par le type de jointure.Output matches (or nonmatches) as dictated by the join type. Si plusieurs jointures utilisent la même colonne de jointure, ces opérations sont regroupées dans une équipe de hachage.If multiple joins use the same join column, these operations are grouped into a hash team.

-Pour les opérateurs distincts ou d’agrégation, utilisez l’entrée pour créer la table de hachage (en supprimant les doublons et en calculant les expressions d’agrégation).-For the distinct or aggregate operators, use the input to build the hash table (removing duplicates and computing any aggregate expressions). Une fois la table de hachage construite, parcourez-la et sortez toutes les entrées.When the hash table is built, scan the table and output all entries.

-Pour l’opérateur UNION, utilisez la première entrée pour créer la table de hachage (en supprimant les doublons).-For the union operator, use the first input to build the hash table (removing duplicates). Utilisez la deuxième entrée (qui ne doit pas comporter de doublons) pour analyser la table de hachage, retourner toutes les lignes sans correspondance, puis analyser la table de hachage et retourner toutes les entrées.Use the second input (which must have no duplicates) to probe the hash table, returning all rows that have no matches, then scan the hash table and return all entries.

Hash Match est un opérateur physique.Hash Match is a physical operator.
Icône de l’élément de langage IfIf language element icon IfIf L'opérateur If effectue un traitement conditionnel basé sur une expression.The If operator carries out conditional processing based on an expression. If est un élément de langage.If is a language element.
NoneNone Inner JoinInner Join L’opérateur logique Inner Join retourne chaque ligne répondant à la jointure de la première entrée (du haut) et de la seconde entrée (du bas).The Inner Join logical operator returns each row that satisfies the join of the first (top) input with the second (bottom) input.
Icône d’opérateur Insert (moteur de base de données)Insert (Database Engine) operator icon InsertInsert L'opérateur logique Insert insère chaque ligne de son entrée dans l'objet spécifié dans la colonne Argument .The Insert logical operator inserts each row from its input into the object specified in the Argument column. L'opérateur physique est l'opérateur Table Insert, Index Insertou Clustered Index Insert .The physical operator is either the Table Insert, Index Insert, or Clustered Index Insert operator.
Icône d’opérateur Inserted ScanInserted scan operator icon Inserted ScanInserted Scan L'opérateur Inserted Scan analyse la table insérée .The Inserted Scan operator scans the inserted table. Inserted Scan est un opérateur logique et physique.Inserted Scan is a logical and physical operator.
Icône de l’élément de langage IntrinsicIntrinsic language element icon IntrinsicIntrinsic L’opérateur Intrinsic appelle une fonction Transact-SQLTransact-SQL interne.The Intrinsic operator invokes an internal Transact-SQLTransact-SQL function. Intrinsic est un élément de langage.Intrinsic is a language element.
Icône d’opérateur Iterator CatchallIterator catchall operator icon IteratorIterator L'icône catchall Iterator s'affiche lorsque la logique qui produit des plans de requête graphiques ne parvient pas à trouver une icône adaptée pour l'itérateur.The Iterator catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. Cette icône n'indique pas nécessairement une condition d'erreur.The catchall icon does not necessarily indicate an error condition. Il existe trois types d'icône catchcall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les constructions de langage Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
Icône d’opérateur Bookmark LookupBookmark lookup operator icon Key LookupKey Lookup L'opérateur Key Lookup est une recherche de signet sur une table avec un index cluster.The Key Lookup operator is a bookmark lookup on a table with a clustered index. La colonne Argument contient le nom de l'index cluster et la clé de clustering utilisée pour rechercher la ligne dans l'index cluster.The Argument column contains the name of the clustered index and the clustering key used to look up the row in the clustered index. Key Lookup est toujours accompagné par un opérateur Nested Loops .Key Lookup is always accompanied by a Nested Loops operator. Si la clause WITH PREFETCH apparaît dans la colonne Argument , cela signifie que le processeur de requêtes a décidé que la prérécupération asynchrone (lecture anticipée) constitue la solution optimale pour la recherche de signets dans l’index cluster.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the clustered index.

L'utilisation d'un opérateur Key Lookup dans un plan de requête indique que la requête peut bénéficier du réglage des performances.The use of a Key Lookup operator in a query plan indicates that the query might benefit from performance tuning. Par exemple, l'ajout d'un index explicatif peut améliorer les performances des requêtes.For example, query performance might be improved by adding a covering index.
Icône d’opérateur de curseur KeysetKeyset cursor operator icon KeysetKeyset L'opérateur Keyset utilise un curseur qui peut détecter les mises à jour, mais pas les insertions effectuées par d'autres.The Keyset operator uses a cursor that can see updates, but not inserts made by others.
Icône catchall Language ElementLanguage element catchall icon Language ElementLanguage Element L'icône catchall Language Element s'affiche lorsque la logique qui produit des plans de requête graphiques ne parvient pas à trouver une icône adaptée pour l'itérateur.The Language Element catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. Cette icône n'indique pas nécessairement une condition d'erreur.The catchall icon does not necessarily indicate an error condition. Il existe trois types d'icône catchcall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les constructions de langage Transact-SQLTransact-SQL ).There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
NoneNone Left Anti Semi JoinLeft Anti Semi Join L’opérateur Left Anti Semi Join retourne chaque ligne de la première entrée (du haut) lorsqu’il n’y a aucune ligne correspondante dans la seconde entrée (du bas).The Left Anti Semi Join operator returns each row from the first (top) input when there is no matching row in the second (bottom) input. Si aucun prédicat de jointure n'est présent dans la colonne Argument , chaque ligne est une ligne correspondante.If no join predicate exists in the Argument column, each row is a matching row. Left Anti Semi Join est un opérateur logique.Left Anti Semi Join is a logical operator.
NoneNone Left Outer JoinLeft Outer Join L’opérateur logique Left Outer Join renvoie chaque ligne répondant à la jointure de la première entrée (du haut) et de la seconde entrée (du bas).The Left Outer Join operator returns each row that satisfies the join of the first (top) input with the second (bottom) input. Il renvoie également toute ligne de la première entrée n'ayant pas de ligne en correspondance dans la seconde entrée.It also returns any rows from the first input that had no matching rows in the second input. Les lignes sans correspondance dans la seconde entrée sont retournées sous forme de valeurs NULL.The nonmatching rows in the second input are returned as null values. Si aucun prédicat de jointure n'est présent dans la colonne Argument , chaque ligne est une ligne correspondante.If no join predicate exists in the Argument column, each row is a matching row. Left Outer Join est un opérateur logique.Left Outer Join is a logical operator.
NoneNone Left Semi JoinLeft Semi Join L’opérateur Left Semi Join retourne chaque ligne de la première entrée (du haut) lorsqu’il y a une ligne correspondante dans la seconde entrée (du bas).The Left Semi Join operator returns each row from the first (top) input when there is a matching row in the second (bottom) input. Si aucun prédicat de jointure n'est présent dans la colonne Argument , chaque ligne est une ligne correspondante.If no join predicate exists in the Argument column, each row is a matching row. Left Semi Join est un opérateur logique.Left Semi Join is a logical operator.
Icône d’opérateur Log Row ScanLog row scan operator icon Log Row ScanLog Row Scan L'opérateur Log Row Scan analyse le journal des transactions.The Log Row Scan operator scans the transaction log. Log Row Scan est un opérateur logique et physique.Log Row Scan is a logical and physical operator.
Icône d’opérateur Merge IntervalMerge interval operator icon Merge IntervalMerge Interval L’opérateur Merge Interval fusionne plusieurs intervalles (susceptibles de se chevaucher) pour produire des intervalles minimaux qui ne se chevauchent pas, intervalles qui seront ensuite utilisés pour rechercher des entrées d’index.The Merge Interval operator merges multiple (potentially overlapping) intervals to produce minimal, nonoverlapping intervals that are then used to seek index entries. Cet opérateur apparaît généralement au-dessus d’un ou plusieurs opérateurs Compute Scalar sur des opérateurs Constant Scan , qui créent les intervalles (représentés sous forme des colonnes d’une ligne) que l’opérateur fusionne.This operator typically appears above one or more Compute Scalar operators over Constant Scan operators, which construct the intervals (represented as columns in a row) that this operator merges. Merge Interval est un opérateur logique et physique.Merge Interval is a logical and physical operator.
Icône d’opérateur Merge JoinMerge join operator icon Merge JoinMerge Join L'opérateur Merge Join exécute les opérations logiques suivantes : inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join et union.The Merge Join operator performs the inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join, and union logical operations.

Dans la colonne Argument , l’opérateur Merge Join contient un prédicat MERGE:() si l’opération exécute une jointure un-à-plusieurs, ou un prédicat MANY-TO-MANY MERGE:() si l’opération exécute une jointure plusieurs-à-plusieurs.In the Argument column, the Merge Join operator contains a MERGE:() predicate if the operation is performing a one-to-many join, or a MANY-TO-MANY MERGE:() predicate if the operation is performing a many-to-many join. La colonne Argument inclut également une liste de colonnes séparées par des virgules utilisées pour exécuter l’opération.The Argument column also includes a comma-separated list of columns used to perform the operation. L'opérateur Merge Join nécessite deux entrées triées dans leurs colonnes respectives, peut-être par l'insertion d'opérations de tri explicites dans le plan de requête.The Merge Join operator requires two inputs sorted on their respective columns, possibly by inserting explicit sort operations into the query plan. L'opérateur Merge join est particulièrement efficace si le tri explicite n'est pas nécessaire, par exemple s'il existe un index B-tree approprié dans la base de données ou si l'ordre de tri peut être exploité pour plusieurs opérations, telles que jointure de fusion et regroupement par cumuls.Merge join is particularly effective if explicit sorting is not required, for example, if there is a suitable B-tree index in the database or if the sort order can be exploited for multiple operations, such as a merge join and grouping with roll up. Merge Join est un opérateur physique.Merge Join is a physical operator.
Icône d’opérateur Nested LoopsNested loops operator icon Nested LoopsNested Loops L'opérateur Nested Loops réalise les opérations logiques Inner Join, Left Outer Join, Left Semi Join et Left Anti Semi Join.The Nested Loops operator performs the inner join, left outer join, left semi join, and left anti semi join logical operations. Les jointures de boucles imbriquées effectuent une recherche sur la table interne pour chaque ligne de la table externe, généralement en utilisant un index.Nested loops joins perform a search on the inner table for each row of the outer table, typically using an index. Le processeur de requêtes décide, sur la base des coûts anticipés, de trier ou non l’entrée externe pour améliorer la localisation des recherches dans l’index de l’entrée interne.The query processor decides, based on anticipated costs, whether to sort the outer input in order to improve locality of the searches on the index over the inner input. Les lignes répondant au prédicat (facultatif) de la colonne Argument sont renvoyées (le cas échéant, sur la base de l’opération logique exécutée).Any rows that satisfy the (optional) predicate in the Argument column are returned as applicable, based on the logical operation being performed. Nested Loops est un opérateur physique.Nested Loops is a physical operator.
Icône d’opérateur Nonclustered Index DeleteNonclustered index delete operator icon Nonclustered Index DeleteNonclustered Index Delete L'opérateur Nonclustered Index Delete supprime des lignes d'entrée de l'index non-cluster spécifié dans la colonne Argument .The Nonclustered Index Delete operator deletes input rows from the nonclustered index specified in the Argument column. Nonclustered Index Delete est un opérateur physique.Nonclustered Index Delete is a physical operator.
Icône d’opérateur Nonclustered Index InsertNonclustered index insert operator icon Index InsertIndex Insert L'opérateur Index Insert insère des lignes de son entrée dans l'index non-cluster spécifié dans la colonne Argument .The Index Insert operator inserts rows from its input into the nonclustered index specified in the Argument column. La colonne Argument contient également un prédicat SET:(), qui indique la valeur à laquelle chaque colonne est définie.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Index Insert est un opérateur physique.Index Insert is a physical operator.
Icône d’opérateur Nonclustered Index ScanNonclustered index scan operator icon Index ScanIndex Scan L'opérateur Index Scan récupère toutes les lignes de l'index non-cluster spécifié dans la colonne Argument .The Index Scan operator retrieves all rows from the nonclustered index specified in the Argument column. Si un prédicat WHERE:() facultatif figure dans la colonne Argument , seules les lignes répondant à ce prédicat sont retournées.If an optional WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Index Scan est un opérateur logique et physique.Index Scan is a logical and physical operator.
Icône d’opérateur Nonclustered Index SeekNonclustered index seek operator icon Index SeekIndex Seek L'opérateur Index Seek utilise la capacité de recherche dans les index pour extraire des lignes d'un index non-cluster.The Index Seek operator uses the seeking ability of indexes to retrieve rows from a nonclustered index. La colonne Argument contient le nom de l'index non-cluster utilisé.The Argument column contains the name of the nonclustered index being used. Il contient également le prédicat SEEK:().It also contains the SEEK:() predicate. Le moteur de stockage utilise l'index pour ne traiter que les lignes répondant au prédicat SEEK:().The storage engine uses the index to process only those rows that satisfy the SEEK:() predicate. Il peut éventuellement inclure un prédicat WHERE:() dans lequel le moteur de stockage est évalué par rapport à toutes les lignes répondant au prédicat SEEK:() ; il ne fait pas appel aux index pour exécuter ce processus.It optionally may include a WHERE:() predicate, which the storage engine will evaluate against all rows that satisfy the SEEK:() predicate (it does not use the indexes to do this). Si la colonne Argument contient la clause ORDERED, cela signifie que le processeur de requêtes a décidé que les lignes devaient être retournées dans l'ordre dans lequel l'index non-cluster les a triées.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the nonclustered index has sorted them. Si la clause ORDERED n'apparaît pas, le moteur de stockage recherche dans l'index de façon optimale (sans garantie de tri de la sortie).If the ORDERED clause is not present, the storage engine searches the index in the optimal way (which does not guarantee that the output will be sorted). Autoriser la sortie à conserver son ordre peut s'avérer moins efficace que la production d'une sortie non triée.Allowing the output to retain its ordering may be less efficient than producing nonsorted output. Index Seek est un opérateur logique et physique.Index Seek is a logical and physical operator.
Icône d’opérateur Nonclustered Index SpoolNonclustered index spool operator icon Index spoolIndex Spool L’opérateur physique Index Spool contient un prédicat SEEK:() dans la colonne Argument .The Index Spool physical operator contains a SEEK:() predicate in the Argument column. L’opérateur Index Spool analyse ses lignes d’entrée en plaçant une copie de chaque ligne dans un fichier d’attente caché (stocké dans la base de données tempdb et qui n’existe que le temps de la requête) et construit un index non-cluster sur les lignes.The Index Spool operator scans its input rows, placing a copy of each row in a hidden spool file (stored in the tempdb database and existing only for the lifetime of the query), and builds a nonclustered index on the rows. Ceci vous permet d'utiliser les capacités de recherche des index afin de ne sortir que les lignes répondant au prédicat SEEK:().This allows you to use the seeking capability of indexes to output only those rows that satisfy the SEEK:() predicate. Si l’opérateur est réutilisé (par un opérateur Nested Loops , par exemple) mais qu’aucune nouvelle liaison n’est nécessaire, les données mises en attente sont utilisées au lieu d’une nouvelle analyse de l’entrée.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input.
Icône d’opérateur Nonclustered Index UpdateNonclustered index update operator icon Nonclustered Index UpdateNonclustered Index Update L'opérateur physique Nonclustered Index Update met à jour des lignes de son entrée dans l'index non-cluster spécifié dans la colonne Argument .The Nonclustered Index Update physical operator updates rows from its input in the nonclustered index specified in the Argument column. Si un prédicat SET:() est présent, chaque colonne mise à jour prend cette valeur.If a SET:() predicate is present, each updated column is set to this value. Nonclustered Index Update est un opérateur physique.Nonclustered Index Update is a physical operator.
Icône d’opérateur Online Index InsertOnline index insert operator icon Online Index InsertOnline Index Insert L'opérateur physique Online Index Insert indique qu'une opération de création, modification ou suppression d'index est effectuée en ligne.The Online Index Insert physical operator indicates that an index create, alter, or drop operation is performed online. Autrement dit, les données de la table sous-jacente restent disponibles aux utilisateurs pendant l'opération d'index.That is, the underlying table data remains available to users during the index operation.
NoneNone ParallelismParallelism L’opérateur Parallelism (ou itérateur d’échange) effectue les opérations logiques de distribution de flux, de collecte de flux et de répartition de flux.The Parallelism operator (or Exchange Iterator) performs the distribute streams, gather streams, and repartition streams logical operations. La colonne Argument peut contenir un prédicat PARTITION COLUMNS:() avec la liste des colonnes de partitionnement séparées par des virgules.The Argument columns can contain a PARTITION COLUMNS:() predicate with a comma-separated list of the columns being partitioned. La colonne Argument peut également contenir un prédicat ORDER BY:(), qui liste les colonnes pour conserver l’ordre de tri durant le partitionnement.The Argument columns can also contain an ORDER BY:() predicate, listing the columns to preserve the sort order for during partitioning. Parallelism est un opérateur physique.Parallelism is a physical operator. Pour plus d’informations sur l’opérateur Parallelism, consultez la série de blogs de Craig Freedman.For more information about the Parallelism operator, see Craig Freedman's blog series.

Remarque : Si une requête a été compilée comme requête parallèle, mais qu’au moment de son exécution elle est exécutée comme une requête séquentielle, les données de sortie du plan d’exécution de requêtes générées par SET STATISTICS XML ou au moyen de l’option Inclure le plan d’exécution réel de SQL Server Management StudioSQL Server Management Studio ne contiendront pas l’élément RunTimeInformation pour l’opérateur Parallelism.Note: If a query has been compiled as a parallel query, but at run time it is run as a serial query, the Showplan output generated by SET STATISTICS XML or by using the Include Actual Execution Plan option in SQL Server Management StudioSQL Server Management Studio will not contain the RunTimeInformation element for the Parallelism operator. Dans le résultat de SET STATISTICS PROFILE, les compteurs de lignes réelles et le nombre réel d'exécutions afficheront des zéros pour l'opérateur Parallelism .In SET STATISTICS PROFILE output, the actual row counts and actual number of executes will display zeroes for the Parallelism operator. Si l’une ou l’autre de ces situations se produit, cela signifie que l’opérateur Parallelism n’a été utilisé que lors de la compilation de la requête, mais pas dans le plan de requête en cours d’exécution.When either condition occurs, it means that the Parallelism operator was only used during query compilation and not in the run-time query plan. Notez que certaines fois, les plans de requête parallèles sont exécutés séquentiellement si le serveur doit faire face à des charges concurrentes élevées.Note that sometimes parallel query plans are run in serial if there is a high concurrent load on the server.
Icône d’opérateur Parameter Table ScanParameter table scan operator icon Parameter Table ScanParameter Table Scan L'opérateur Parameter Table Scan analyse une table qui agit comme paramètre dans la requête en cours.The Parameter Table Scan operator scans a table that is acting as a parameter in the current query. Généralement, cet opérateur est utilisé dans une procédure stockée pour les requêtes INSERT.Typically, this is used for INSERT queries within a stored procedure. Parameter Table Scan est un opérateur logique et physique.Parameter Table Scan is a logical and physical operator.
NoneNone Partial AggregatePartial Aggregate Partial Aggregate est utilisé dans des plans parallèles.Partial Aggregate is used in parallel plans. Il applique une fonction d'agrégation à autant de lignes d'entrée que possible, afin que l'écriture sur le disque (appelé « débordement ») ne soit pas nécessaire.It applies an aggregation function to as many input rows as possible so that writing to disk (known as a "spill") is not necessary. Hash Match constitue l’unique opérateur physique (itérateur) qui implémente une agréation de partition.Hash Match is the only physical operator (iterator) that implements partition aggregation. Partial Aggregate est un opérateur logique.Partial Aggregate is a logical operator.
Icône d’opérateur de curseur Population QueryPopulation query cursor operator icon Population QueryPopulation Query L'opérateur Population Query permet de renseigner la table de travail d'un curseur lorsque le curseur est ouvert.The Population Query operator populates the work table of a cursor when the cursor is opened.
Icône d’opérateur de curseur Refresh QueryRefresh query cursor operator icon Refresh QueryRefresh Query L'opérateur Refresh Query extrait les données courantes des lignes du tampon d'extraction.The Refresh Query operator fetches current data for rows in the fetch buffer.
Icône d’opérateur Remote DeleteRemote delete operator icon Remote DeleteRemote Delete L'opérateur Remote Delete supprime les lignes d'entrée d'un objet distant.The Remote Delete operator deletes the input rows from a remote object. Remote Delete est un opérateur logique et physique.Remote Delete is a logical and physical operator.
Opérateur de plan d’exécution de requêtes Recherche d’index distantRemote index seek showplan operator Remote Index ScanRemote Index Scan L’opérateur Remote Index Scan analyse l’index distant spécifié dans la colonne Argument.The Remote Index Scan operator scans the remote index specified in the Argument column. Remote Index Scan est un opérateur logique et physique.Remote Index Scan is a logical and physical operator.
Opérateur de plan d’exécution de requêtes Recherche d’index distantRemote index seek showplan operator Remote Index SeekRemote Index Seek L'opérateur Remote Index Seek utilise les capacités de recherche d'un objet d'index distant pour extraire des lignes.The Remote Index Seek operator uses the seeking ability of a remote index object to retrieve rows. La colonne Argument contient le nom de l’index distant utilisé et le prédicat SEEK:().The Argument column contains the name of the remote index being used and the SEEK:() predicate. Remote Index Seek est un opérateur physique logique.Remote Index Seek is a logical physical operator.
Icône d’opérateur Remote InsertRemote insert operator icon Remote InsertRemote Insert L'opérateur Remote Insert insère des lignes d'entrée dans un objet distant.The Remote Insert operator inserts the input rows into a remote object. Remote Insert est un opérateur logique et physique.Remote Insert is a logical and physical operator.
Icône d’opérateur Remote QueryRemote query operator icon Remote QueryRemote Query L'opérateur Remote Query soumet une requête à une source distante.The Remote Query operator submits a query to a remote source. Le texte de la requête envoyée au serveur distant apparaît dans la colonne Argument .The text of the query sent to the remote server appears in the Argument column. Remote Query est un opérateur logique et physique.Remote Query is a logical and physical operator.
Icône d’opérateur Remote ScanRemote scan operator icon Remote ScanRemote Scan L'opérateur Remote Scan analyse un objet distant.The Remote Scan operator scans a remote object. Le nom de l'objet distant apparaît dans la colonne Argument .The name of the remote object appears in the Argument column. Remote Scan est un opérateur logique et physique.Remote Scan is a logical and physical operator.
Icône d’opérateur Remote UpdateRemote update operator icon Remote UpdateRemote Update L'opérateur Remote Update met à jour les lignes d'entrée dans un objet distant.The Remote Update operator updates the input rows in a remote object. Remote Update est un opérateur logique et physique.Remote Update is a logical and physical operator.
Icône d’opérateur de parallélisme Repartition StreamsRepartition streams parallelism operator icon Repartition StreamsRepartition Streams L'opérateur Repartition Streams (ou itérateur d’échange) consomme plusieurs flux et produit plusieurs flux d'enregistrements.The Repartition Streams operator (or exchange iterator) consumes multiple streams and produces multiple streams of records. Le contenu et le format des enregistrements ne sont pas modifiés.The record contents and format are not changed. Si l'optimiseur de requête utilise un filtre bitmap, le nombre de lignes dans le flux de sortie est réduit.If the query optimizer uses a bitmap filter, the number of rows in the output stream is reduced. Chaque enregistrement d'un flux d'entrée est placé dans un flux de sortie.Each record from an input stream is placed into one output stream. Si l'opérateur conserve l'ordre de tri, tous les flux d'entrée seront classés et fusionnés en plusieurs flux de sortie triés.If this operator is order preserving, all input streams must be ordered and merged into several ordered output streams. Si la sortie est partitionnée, la colonne Argument contient un prédicat PARTITION COLUMNS:() et les colonnes de partitionnement. Si la sortie est triée, la colonne Argument contient un prédicat ORDER BY:() et les colonnes triées.If the output is partitioned, the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the columns being ordered. Repartition Streams est un opérateur logique.Repartition Streams is a logical operator. Cet opérateur n'est utilisé que dans les plans de requête en parallèle.The operator is used only in parallel query plans.
Icône de l’élément de langage ResultResult language element icon ResultResult L'opérateur Result contient les données retournées à la fin d'un plan de requête.The Result operator is the data returned at the end of a query plan. Il représente en général l'élément racine d'un plan d'exécution de requêtes.This is usually the root element of a Showplan. Result est un élément de langage.Result is a language element.
Icône d’opérateur RID LookupRID lookup operator icon RID LookupRID Lookup RID Lookup est une recherche de signet sur un segment utilisant un identificateur de ligne fourni (RID, Row Identifier).RID Lookup is a bookmark lookup on a heap using a supplied row identifier (RID). La colonne Argument contient l'étiquette de signet utilisée pour rechercher la ligne dans la table, ainsi que le nom de la table dans laquelle la ligne est recherchée.The Argument column contains the bookmark label used to look up the row in the table and the name of the table in which the row is looked up. RID Lookup est toujours accompagné par un opérateur NESTED LOOP JOIN.RID Lookup is always accompanied by a NESTED LOOP JOIN. RID Lookup est un opérateur physique.RID Lookup is a physical operator. Pour plus d'informations sur les recherches de signets, consultez «Bookmark Lookup» (en anglais) sur le blog MSDN SQL Server.For more information about bookmark lookups, see "Bookmark Lookup" on the MSDN SQL Server blog.
Icône d’opérateur Row Count SpoolRow count spool operator icon Row Count SpoolRow Count Spool L'opérateur Row Count Spool analyse l'entrée en comptant le nombre de lignes présentes et en retournant ce même nombre de lignes exemptes de données.The Row Count Spool operator scans the input, counting how many rows are present and returning the same number of rows without any data in them. Cet opérateur est utilisé lorsqu'il est plus important de vérifier l'existence des lignes que les données qu'elles contiennent.This operator is used when it is important to check for the existence of rows, rather than the data contained in the rows. Par exemple, si un opérateur Nested Loops exécute une opération Left Semi Joint et que le prédicat de jointure s'applique à l'entrée interne, un spool du nombre de lignes peut être placé en haut de l'entrée interne de l'opérateur Nested Loops .For example, if a Nested Loops operator performs a left semi join operation and the join predicate applies to inner input, a row count spool may be placed at the top of the inner input of the Nested Loops operator. L’opérateur Nested Loops peut alors déterminer le nombre de lignes sorties par l’opérateur Row Count Spool (car les données réelles de la partie interne ne sont pas indispensables) afin d’établir s’il doit renvoyer ou non la ligne externe.Then the Nested Loops operator can determine how many rows are output by the row count spool (because the actual data from the inner side is not needed) to determine whether to return the outer row. Row Count Spool est un opérateur physique.Row Count Spool is a physical operator.
NoneNone Right Anti Semi JoinRight Anti Semi Join L’opérateur Right Anti Semi Join extrait chaque ligne de la seconde entrée (en bas) lorsqu’il n’existe pas de ligne correspondante dans la première entrée (en haut).The Right Anti Semi Join operator outputs each row from the second (bottom) input when a matching row in the first (top) input does not exist. Une ligne correspondante se définit comme une ligne répondant au prédicat de la colonne Argument (s’il n’y a pas de prédicat, chaque ligne est une ligne correspondante).A matching row is defined as a row that satisfies the predicate in the Argument column (if no predicate exists, each row is a matching row). Right Anti Semi Join est un opérateur logique.Right Anti Semi Join is a logical operator.
NoneNone Right Outer JoinRight Outer Join L’opérateur Right Outer Join retourne chaque ligne répondant à la condition de jointure de la seconde entrée (du bas) avec chaque ligne correspondante dans la première entrée (du haut).The Right Outer Join operator returns each row that satisfies the join of the second (bottom) input with each matching row from the first (top) input. Il retourne également toutes les lignes de la seconde entrée qui n'ont pas de lignes correspondantes dans la première entrée, reliées par la valeur NULL.It also returns any rows from the second input that had no matching rows in the first input, joined with NULL. Si aucun prédicat de jointure n'est présent dans la colonne Argument , chaque ligne est une ligne correspondante.If no join predicate exists in the Argument column, each row is a matching row. Right Outer Join est un opérateur logique.Right Outer Join is a logical operator.
NoneNone Right Semi JoinRight Semi Join L’opérateur Right Semi Join renvoie chaque ligne de la seconde entrée (du bas) lorsqu’il y a une ligne correspondante dans la première entrée (du haut).The Right Semi Join operator returns each row from the second (bottom) input when there is a matching row in the first (top) input. Si aucun prédicat de jointure n'est présent dans la colonne Argument , chaque ligne est une ligne correspondante.If no join predicate exists in the Argument column, each row is a matching row. Right Semi Join est un opérateur logique.Right Semi Join is a logical operator.
Icône d’opérateur SegmentSegment operator icon SegmentSegment Segment est un opérateur logique et physique.Segment is a physical and a logical operator. Il divise le jeu d'entrée en segments en fonction de la valeur d'une ou plusieurs colonnes.It divides the input set into segments based on the value of one or more columns. Ces colonnes apparaissent en tant qu'arguments dans l'opérateur Segment .These columns are shown as arguments in the Segment operator. L'opérateur génère ensuite un segment à la fois.The operator then outputs one segment at a time.
Icône d’opérateur SequenceSequence operator icon SequenceSequence L'opérateur Sequence gère des plans de mise à jour étendus.The Sequence operator drives wide update plans. Il exécute, sur le plan fonctionnel, chaque entrée en séquence (de haut en bas).Functionally, it executes each input in sequence (top to bottom). Chaque entrée est généralement une mise à jour d'un objet différent.Each input is usually an update of a different object. Il ne retourne que les lignes provenant de sa dernière entrée (du bas).It returns only those rows that come from its last (bottom) input. Sequence est un opérateur logique et physique.Sequence is a logical and physical operator.
Icône d’opérateur Sequence ProjectSequence project operator icon Sequence ProjectSequence Project L'opérateur Sequence Project ajoute des colonnes pour effectuer des calculs sur un jeu ordonné.The Sequence Project operator adds columns to perform computations over an ordered set. Il divise le jeu d'entrée en segments en fonction de la valeur d'une ou plusieurs colonnes.It divides the input set into segments based on the value of one or more columns. L'opérateur génère ensuite un segment à la fois.The operator then outputs one segment at a time. Ces colonnes s'affichent en tant qu'arguments dans l'opérateur Sequence Project .These columns are shown as arguments in the Sequence Project operator. Sequence Project est un opérateur logique et physique.Sequence Project is a logical and physical operator.
NoneNone Segment RepartitionSegment Repartition Dans un plan de requête parallèle, il existe parfois des régions conceptuelles composées d'itérateurs.In a parallel query plan, sometimes there are conceptual regions of iterators. Tous les itérateurs de ces régions peuvent être exécutés par des threads parallèles.All of the iterators within such a region can be executed by parallel threads. Les régions elles-mêmes doivent être exécutées séquentiellement.The regions themselves must be executed serially. Certains itérateurs Parallelism d'une région distincte sont appelés Branch Repartition.Some of the Parallelism iterators within an individual region are called Branch Repartition. L'itérateur Parallelism situé à la limite de deux régions de ce type est appelé Segment Repartition.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch Repartition et Segment Repartition sont des opérateurs logiques.Branch Repartition and Segment Repartition are logical operators.
Icône d’opérateur de curseur SnapshotSnapshot cursor operator icon SnapshotSnapshot L'opérateur Snapshot crée un curseur qui ne voit pas les modifications apportées par les autres.The Snapshot operator creates a cursor that does not see changes made by others.
Icône d’opérateur SortSort operator icon SortSort L'opérateur Sort trie toutes les lignes entrantes.The Sort operator sorts all incoming rows. La colonne Argument contient soit un prédicat DISTINCT ORDER BY:() si les doublons sont supprimés par cette opération, soit un prédicat ORDER BY:() accompagné de la liste des colonnes à trier séparées par des virgules.The Argument column contains either a DISTINCT ORDER BY:() predicate if duplicates are removed by this operation, or an ORDER BY:() predicate with a comma-separated list of the columns being sorted. Les colonnes comportent le préfixe ASC si elles sont triées dans l'ordre ascendant, ou DESC si elles sont triées dans l'ordre descendant.The columns are prefixed with the value ASC if the columns are sorted in ascending order, or the value DESC if the columns are sorted in descending order. Sort est un opérateur logique et physique.Sort is a logical and physical operator.
Icône d’opérateur SplitSplit operator icon SplitSplit L'opérateur Split est utilisé pour optimiser le traitement des mises à jour.The Split operator is used to optimize update processing. Il divise chaque opération de mise à jour en opérations DELETE et INSERT.It splits each update operation into a delete and an insert operation. L'opérateurSplit est un opérateur logique et physique.Split is a logical and physical operator.
Icône d’opérateur SpoolSpool operator icon Eager SpoolEager Spool L'opérateur Eager Spool utilise l'ensemble de l'entrée en stockant chaque ligne dans un objet temporaire masqué stocké dans la base de données tempdb .The Eager Spool operator takes the entire input, storing each row in a hidden temporary object stored in the tempdb database. Si l’opérateur est réutilisé (par un opérateur Nested Loops , par exemple) mais qu’aucune nouvelle liaison n’est nécessaire, les données mises en attente sont utilisées au lieu d’une nouvelle analyse de l’entrée.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. Si une nouvelle liaison est nécessaire, les données mises en attente sont supprimées et l'objet en attente est recréé par une nouvelle analyse de l'entrée (liée une nouvelle fois).If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. L'opérateur Eager Spool crée le fichier spouleur avec « avidité » : lorsque l'opérateur parent du spool demande la première ligne, l'opérateur spool consomme toutes les lignes de son opérateur d'entrée et les stocke dans le spool.The Eager Spool operator builds its spool file in an "eager" manner: when the spool's parent operator asks for the first row, the spool operator consumes all rows from its input operator and stores them in the spool. Eager Spool est un opérateur logique.Eager Spool is a logical operator.
Icône d’opérateur SpoolSpool operator icon Lazy SpoolLazy Spool L'opérateur logique Lazy Spool stocke chaque ligne de son entrée dans un objet temporaire masqué, lui-même stocké dans la base de données tempdb .The Lazy Spool logical operator stores each row from its input in a hidden temporary object stored in the tempdb database. Si l’opérateur est réutilisé (par un opérateur Nested Loops , par exemple) mais qu’aucune nouvelle liaison n’est nécessaire, les données mises en attente sont utilisées au lieu d’une nouvelle analyse de l’entrée.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. Si une nouvelle liaison est nécessaire, les données mises en attente sont supprimées et l'objet en attente est recréé par une nouvelle analyse de l'entrée (liée une nouvelle fois).If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. L'opérateur Lazy Spool crée son fichier d'attente de manière « économique » : chaque fois que l'opérateur parent du fichier d'attente demande une ligne, l'opérateur en attente obtient une ligne de son opérateur d'entrée et la stocke dans le fichier d'attente, au lieu de consommer toutes les lignes simultanément.The Lazy Spool operator builds its spool file in a "lazy" manner, that is, each time the spool's parent operator asks for a row, the spool operator gets a row from its input operator and stores it in the spool, rather than consuming all rows at once. Lazy Spool est un opérateur logique.Lazy Spool is a logical operator.
Icône d’opérateur SpoolSpool operator icon SpoolSpool L'opérateur Spool enregistre un résultat de requête intermédiaire dans la base de données tempdb .The Spool operator saves an intermediate query result to the tempdb database.
Icône d’opérateur Stream AggregateStream aggregate operator icon Stream AggregateStream Aggregate L'opérateur Stream Aggregate effectue un regroupement d'après une ou plusieurs colonnes et calcule une ou plusieurs expressions d'agrégation retournées par la requête.The Stream Aggregate operator groups rows by one or more columns and then calculates one or more aggregate expressions returned by the query. La sortie de cet opérateur peut être référencée par des opérateurs ultérieurs dans la requête, retournés au client, ou les deux.The output of this operator can be referenced by later operators in the query, returned to the client, or both. L'opérateur Stream Aggregate exige que l'entrée suive l'ordre des colonnes dans ses groupes.The Stream Aggregate operator requires input ordered by the columns within its groups. L'optimiseur utilise un opérateur Sort avant cet opérateur si les données ne sont pas déjà triées en raison d'un opérateur Sort précédent ou d'une recherche ou d'une analyse d'index triée.The optimizer will use a Sort operator prior to this operator if the data is not already sorted due to a prior Sort operator or due to an ordered index seek or scan. Dans l’instruction SHOWPLAN_ALL ou dans le plan d’exécution graphique de SQL Server Management StudioSQL Server Management Studio, les colonnes du prédicat GROUP BY sont répertoriées dans la colonne Argument , et les expressions d’agrégation sont répertoriées dans la colonne Defined Values .In the SHOWPLAN_ALL statement or the graphical execution plan in SQL Server Management StudioSQL Server Management Studio, the columns in the GROUP BY predicate are listed in the Argument column, and the aggregate expressions are listed in the Defined Values column. Stream Aggregate est un opérateur physique.Stream Aggregate is a physical operator.
Icône d’opérateur SwitchSwitch operator icon SwitchSwitch Switch est un type particulier d'itérateur de concaténation qui a n entrées.Switch is a special type of concatenation iterator that has n inputs. Une expression est associée à chaque opérateur Switch .An expression is associated with each Switch operator. Selon la valeur renvoyée par l’expression (entre 0 et n-1), Switch copie le flux d’entrée approprié dans le flux de sortie.Depending on the return value of the expression (between 0 and n-1), Switch copies the appropriate input stream to the output stream. L'une des utilisations de Switch consiste à implémenter des plans de requête impliquant des curseurs à avance rapide avec certains opérateurs tels que l'opérateur TOP .One use of Switch is to implement query plans involving fast forward cursors with certain operators such as the TOP operator. Switch est un opérateur logique et physique.Switch is both a logical and physical operator.
Icône d’opérateur Table DeleteTable delete operator icon Table DeleteTable Delete L'opérateur physique Table Delete supprime les lignes de la table spécifiée dans la colonne Argument du plan d'exécution de requête.The Table Delete physical operator deletes rows from the table specified in the Argument column of the query execution plan.
Icône d’opérateur Table InsertTable insert operator icon Table InsertTable Insert L'opérateur Table Insert insère les lignes de son entrée dans la table spécifiée dans la colonne Argument du plan d'exécution de requête.The Table Insert operator inserts rows from its input into the table specified in the Argument column of the query execution plan. La colonne Argument contient également un prédicat SET:(), qui indique la valeur à laquelle chaque colonne est définie.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Si Table Insert ne possède pas d'enfant pour les valeurs insert, la ligne insérée est extraite de l'opérateur Insert lui-même.If Table Insert has no children for insert values, then the row inserted is taken from the Insert operator itself. Table Insert est un opérateur physique.Table Insert is a physical operator.
Opérateur Table MergeTable merge operator Table MergeTable Merge L'opérateur Table Merge applique un flux de données de fusion à un tas.The Table Merge operator applies a merge data stream to a heap. L'opérateur supprime, met à jour ou insère des lignes dans la table spécifiée dans la colonne Argument de l'opérateur.The operator deletes, updates, or inserts rows in the table specified in the Argument column of the operator. L’opération réellement effectuée dépend de la valeur d’exécution de la colonne ACTION spécifiée dans la colonne Argument de l’opérateur.The actual operation performed depends on the run-time value of the ACTION column specified in the Argument column of the operator. Table Merge est un opérateur physique.Table Merge is a physical operator.
Icône d’opérateur Table ScanTable scan operator icon Table ScanTable Scan L'opérateur Table Scan extrait toutes les lignes de la table spécifiée dans la colonne Argument du plan d'exécution de requête.The Table Scan operator retrieves all rows from the table specified in the Argument column of the query execution plan. Si un prédicat WHERE:() figure dans la colonne Argument , seules les lignes répondant à ce prédicat sont retournées.If a WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Table Scan est un opérateur logique et physique.Table Scan is a logical and physical operator.
Icône d’opérateur Table SpoolTable spool operator icon Table SpoolTable Spool L'opérateur Table Spool analyse l'entrée et place une copie de chaque ligne dans une table d'attente cachée, qui est stockée dans la base de données tempdb et qui n'existe que le temps de la requête.The Table Spool operator scans the input and places a copy of each row in a hidden spool table that is stored in the tempdb database and existing only for the lifetime of the query. Si l’opérateur est réutilisé (par un opérateur Nested Loops , par exemple) mais qu’aucune nouvelle liaison n’est nécessaire, les données mises en attente sont utilisées au lieu d’une nouvelle analyse de l’entrée.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. Table Spool est un opérateur physique.Table Spool is a physical operator.
Icône d’opérateur Table SpoolTable spool operator icon Window SpoolWindow Spool L'opérateur Window Spool développe chaque ligne dans un ensemble de lignes qui représente la fenêtre qui lui est associée.The Window Spool operator expands each row into the set of rows that represents the window associated with it. Dans une requête, la clause OVER définit la fenêtre dans un jeu de résultats de la requête et une fonction de fenêtre calcule ensuite une valeur pour chaque ligne de la fenêtre.In a query, the OVER clause defines the window within a query result set and a window function then computes a value for each row in the window. Window Spool est un opérateur logique et physique.Window Spool is a logical and physical operator.
Icône d’opérateur Table UpdateTable update operator icon Table UpdateTable Update L'opérateur physique Table Update met à jour les lignes d'entrée de la table spécifiée dans la colonne Argument du plan d'exécution de requête.The Table Update physical operator updates input rows in the table specified in the Argument column of the query execution plan. Le prédicat SET:() détermine la valeur de chaque colonne mise à jour.The SET:() predicate determines the value of each updated column. Ces valeurs peuvent être référencées dans la clause SET ou ailleurs dans cet opérateur et ailleurs dans cette requête.These values may be referenced in the SET clause or elsewhere within this operator as well as elsewhere within this query.
Icône d’opérateur Table-valued FunctionTable-valued function operator icon Table-valued FunctionTable-valued Function L’opérateur Table-valued Function évalue une fonction table ( Transact-SQLTransact-SQL ou CLR) et stocke les lignes obtenues dans la base de données tempdb .The Table-valued Function operator evaluates a table-valued function (either Transact-SQLTransact-SQL or CLR), and stores the resulting rows in the tempdb database. Lorsque les itérateurs parents demandent les lignes, Table-valued Function renvoie les lignes à partir de tempdb.When the parent iterators request the rows, Table-valued Function returns the rows from tempdb.

Les requêtes avec des appels à des fonctions table génèrent des plans de requêtes avec l’itérateur Table-valued Function .Queries with calls to table-valued functions generate query plans with the Table-valued Function iterator. Lafonction table peut être évaluée avec différentes valeurs de paramètres :Table-valued Function can be evaluated with different parameter values:

-
Lecteur XML de fonctions table entre un BLOB XML en guise de paramètre et produit un ensemble de lignes représentant des nœuds XML dans l’ordre des documents XML.Table-valued Function XML Reader inputs an XML BLOB as a parameter and produces a rowset representing XML nodes in XML document order. D'autres paramètres d'entrée peuvent limiter les nœuds XML renvoyés à un sous-ensemble d'un document XML.Other input parameters may restrict XML nodes returned to a subset of XML document.

-Lecteur XML de fonctions table avec filtre XPath est un type spécial de Fonction table de lecteur XML qui limite la sortie aux nœuds XML qui satisfont à une expression XPath.-Table Valued Function XML Reader with XPath filter is a special type of XML Reader Table-valued Function that restricts output to XML nodes satisfying an XPath expression.

Table-valued Function est un opérateur logique et physique.Table-valued Function is a logical and physical operator.
NoneNone Top N SortTop N Sort L'itérateurTop N Sort est similaire à l'itérateur Sort , à la différence que seules les N premières lignes sont requises, et non pas la totalité de l'ensemble de résultats.Top N Sort is similar to the Sort iterator, except that only the first N rows are needed, and not the entire result set. Pour de petites valeurs de N, le moteur d'exécution de requête de SQL ServerSQL Server essaie de réaliser en mémoire la totalité de l'opération de tri.For small values of N, the SQL ServerSQL Server query execution engine attempts to perform the entire sort operation in memory. Pour des valeurs élevées de N, le moteur d'exécution de requête recourt à la méthode de tri plus générique, dans laquelle N n'est pas un paramètre.For large values of N, the query execution engine resorts to the more generic method of sorting to which N is not a parameter.
Icône d’opérateur TopTop operator icon TopTop L'opérateur Top analyse l'entrée et retourne uniquement le premier nombre ou pourcentage spécifié de lignes, éventuellement en fonction d'un ordre de tri.The Top operator scans the input, returning only the first specified number or percent of rows, possibly based on a sort order. La colonne Argument peut contenir la liste des colonnes dont les liaisons sont vérifiées.The Argument column can contain a list of the columns that are being checked for ties. Dans les plans de mise à jour, l'opérateur Top renforce les limites du nombre de lignes.In update plans, the Top operator is used to enforce row count limits. Top est un opérateur logique et physique.Top is a logical and physical operator.
Icône d’opérateur UDX (Extended)Extended operator (UDX) icon UDXUDX Les opérateurs UDX (Extended Operators) implémentent l'une des nombreuses opérations XQuery et XPath dans SQL ServerSQL Server.Extended Operators (UDX) implement one of many XQuery and XPath operations in SQL ServerSQL Server. Tous les opérateurs UDX sont des opérateurs logiques et physiques.All UDX operators are both logical and physical operators.

L’opérateur UDX FOR XML est utilisé pour sérialiser l’ensemble de lignes relationnelles qu’il entre dans la représentation XML dans une colonne BLOB dans une ligne de sortie.Extended operator (UDX) FOR XML is used to serialize the relational row set it inputs into XML representation in a single BLOB column in a single output row. Il s'agit d'un opérateur d'agrégation XML qui tient compte de l'ordre.It is an order sensitive XML aggregation operator.

L’opérateur UDX XML SERIALIZER est un opérateur d’agrégation XML qui tient compte de l’ordre.Extended operator (UDX) XML SERIALIZER is an order sensitive XML aggregation operator. Il entre des lignes qui représentent des nœuds XML ou des valeurs scalaires XQuery dans un ordre de document XML et produit un objet BLOB XML sérialisé dans une colonne XML dans une ligne de sortie.It inputs rows representing XML nodes or XQuery scalars in XML document order and produces a serialized XML BLOB in a single XML column in a single output row.

L’opérateur UDX XML FRAGMENT SERIALIZER est un type spécial de XML SERIALIZER qui permet de traiter les lignes d’entrée représentant les fragments XML à insérer dans l’extension de modification de données d’insertion XQuery.Extended operator (UDX) XML FRAGMENT SERIALIZER is a special type of XML SERIALIZER that is used for processing input rows representing XML fragments being inserted in XQuery insert data modification extension.

L’opérateur UDX XQUERY STRING évalue la valeur de la chaîne XQuery des lignes d’entrée représentant des nœuds XML.Extended operator (UDX) XQUERY STRING evaluates the XQuery string value of input rows representing XML nodes. Il s'agit d'un opérateur d'agrégation de chaîne qui tient compte de l'ordre.It is an order sensitive string aggregation operator. Il produit une ligne avec des colonnes représentant la valeur scalaire XQuery qui contient la valeur de chaîne de l'entrée.It outputs one row with columns representing the XQuery scalar that contains string value of the input.

L’opérateur UDX XQUERY LIST DECOMPOSER est un opérateur de décomposition de liste XQuery.Extended operator (UDX) XQUERY LIST DECOMPOSER is an XQuery list decomposition operator. Pour chaque ligne d'entrée représentant un nœud XML, il produit une ou plusieurs lignes représentant chacune une valeur scalaire contenant une valeur d'élément de liste si le type d'entrée est une liste XSD.For each input row representing an XML node it produces one or more rows each representing XQuery scalar containing a list element value if the input is of XSD list type.

L’opérateur UDX XQUERY DATA évalue la fonction XQuery fn:data() dans l’entrée représentant des nœuds XML.Extended operator (UDX) XQUERY DATA evaluates the XQuery fn:data() function on input representing XML nodes. Il s'agit d'un opérateur d'agrégation de chaîne qui tient compte de l'ordre.It is an order sensitive string aggregation operator. Il produit une ligne avec des colonnes représentant la valeur scalaire XQuery qui contient le résultat de fn:data().It outputs one row with columns representing XQuery scalar that contains the result of fn:data().

L’opérateur UDX XQUERY CONTAINS évalue la fonction XQuery fn:contains() dans l’entrée représentant des nœuds XML.Extended operator XQUERY CONTAINS evaluates the XQuery fn:contains() function on input representing XML nodes. Il s'agit d'un opérateur d'agrégation de chaîne qui tient compte de l'ordre.It is an order sensitive string aggregation operator. Il produit une ligne avec des colonnes représentant la valeur scalaire XQuery qui contient le résultat de fn:contains().It outputs one row with columns representing XQuery scalar that contains the result of fn:contains().

L’opérateur étendu UPDATE XML NODE met à jour un nœud XML dans l’extension de modification de données de remplacement XQuery dans la méthode modify() dans le type XML.Extended operator UPDATE XML NODE updates XML node in the XQuery replace data modification extension in the modify() method on XML type.
NoneNone UnionUnion L'opérateur Union analyse plusieurs entrées en sortant chaque ligne analysée et en supprimant les doublons.The Union operator scans multiple inputs, outputting each row scanned and removing duplicates. Union est un opérateur logique.Union is a logical operator.
Icône d’opérateur Update (moteur de base de données)Update (Database Engine) operator icon UpdateUpdate L'opérateur Update met à jour chaque ligne de son entrée dans l'objet spécifié dans la colonne Argument du plan d'exécution de requête.The Update operator updates each row from its input in the object specified in the Argument column of the query execution plan. Update est un opérateur logique.Update is a logical operator. L'opérateur physique est Table Update, Index Updateou Clustered Index Update.The physical operator is Table Update, Index Update, or Clustered Index Update.
Icône de l’élément de langage WhileWhile language element icon WhileWhile L’opérateur While implémente la boucle while Transact-SQLTransact-SQL .The While operator implements the Transact-SQLTransact-SQL while loop. While est un élément de langage.While is a language element