Référence de l’opérateur showplan logique et physique

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Les opérateurs décrivent comment SQL Server exécute une requête ou une instruction DML (Data Manipulation Language). 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. Le plan de requête est une arborescence composée d'opérateurs physiques. Vous pouvez afficher le plan de requête à l’aide SET SHOWPLAN des instructions, des options de plan d’exécution graphique dans SQL Server Management Studio ou des événements étendus.

Les opérateurs sont classés en opérateurs logiques et physiques.

Opérateurs logiques

Les opérateurs logiques décrivent l'opération algébrique relationnelle utilisée pour traiter une instruction. En d'autres termes, les opérateurs logiques décrivent de manière conceptuelle les opérations à exécuter.

Opérateurs physiques

Les opérateurs physiques mettent en œuvre l'opération décrite par des opérateurs logiques. Chaque opérateur physique désigne un objet ou une routine chargée d'effectuer une opération. 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. D’autres opérateurs physiques effectuent des opérations telles que des calculs, des agrégations, des case activée d’intégrité des données ou des jointures. Des coûts sont associés aux opérateurs physiques.

Les opérateurs physiques s'initialisent, collectent des données et se ferment. En particulier, l'opérateur physique peut répondre aux trois méthodes d'appel suivantes :

  • Open(): La Open() méthode provoque l’initialisation d’un opérateur physique et la configuration de toutes les structures de données requises. Même si l’opérateur physique peut recevoir de nombreux Open() appels, il ne reçoit généralement qu’un seul.

  • GetRow(): La GetRow() méthode entraîne l’obtention d’un opérateur physique pour obtenir la première ligne de données ou la ligne suivante. L’opérateur physique peut recevoir zéro ou plusieurs GetRow() appels.

  • Close(): la Close() méthode entraîne l’exécution d’opérations de propre physiques et s’arrête elle-même. Un opérateur physique ne reçoit qu’un Close() seul appel, mais un Close() appel n’est pas toujours garanti.

La GetRow() méthode retourne une ligne de données et le nombre de fois qu’elle est appelée apparaît en tant que ActualRows dans la sortie du plan d’affichage généré par le plan d’affichage graphique et XML. Pour plus d’informations sur ces SET options, consultez SET STATISTICS PROFILE (Transact-SQL) et SET STATISTICS XML (Transact-SQL).

Les nombres ActualRebinds et ActualRewinds qui apparaissent dans la sortie showplan font référence au nombre de fois où la Open() méthode est appelée. Sauf si un opérateur se trouve sur le côté interne d’une jointure de boucles imbriquées, ActualRebinds est égal à un, et ActualRewinds est égal à zéro. Si un opérateur se trouve sur le côté interne d’une jointure de boucle, le nombre total de rebinds et de rembobinages doit être égal au nombre de lignes traitées sur le côté externe de la jointure. 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é. Un rembobinage signifie qu’aucun des paramètres corrélés n’a changé et que le jeu de résultats interne précédent peut être réutilisé.

ActualRebinds et ActualRewinds sont présents dans la sortie du plan d’affichage XML produite à l’aide SET STATISTICS XML ON et le plan d’affichage graphique. Ils sont renseignés uniquement pour les opérateurs de fonction non cluster, Requête distante, Nombre de lignes, Sort, Table Spool et Table . ActualRebinds et ActualRewinds peuvent également être renseignés pour les opérateurs Assert et Filter lorsque l’attribut StartupExpression a la valeur TRUE.

Lorsque ActualRebinds et ActualRewinds sont présents dans un showplan XML, ils sont comparables à EstimateRebinds et EstimateRewinds. Lorsqu’ils sont absents, le nombre estimé de lignes (EstimateRows) est comparable au nombre réel de lignes (ActualRows). La sortie du plan d’affichage graphique réel affiche des zéros pour les rebinds réels et les rembobinages réels lorsqu’ils sont absents.

Un compteur associé, ActualEndOfScans, est disponible dans le plan d’affichage XML et graphique. Chaque fois qu’un opérateur physique atteint la fin de son flux de données, ce compteur incrémente d’un. Un opérateur physique peut atteindre la fin de son flux de données zéro, une ou de nombreuses fois. Comme pour les rebinds et les rembobinages, la fin du nombre d’analyses peut être plusieurs, uniquement si l’opérateur se trouve sur le côté interne d’une jointure de boucle. La fin du nombre d’analyses doit être inférieure ou égale à la somme du nombre de rebinds et de rembobinages.

Mapper des opérateurs physiques et logiques

L'optimiseur de requête crée un plan de requête sous forme d'arborescence d'opérateurs logiques. Après avoir créé le plan, l'optimiseur de requête choisit l'opérateur physique le plus efficace pour chaque opérateur logique. L’optimiseur de requête utilise une approche basée sur les coûts pour déterminer quel opérateur physique implémente un opérateur logique.

Généralement, une opération logique peut être mise en œuvre par plusieurs opérateurs physiques. Toutefois, en de rares occasions, un opérateur physique peut également mettre en œuvre plusieurs opérations logiques.

Exécution en mode batch

L’exécution du mode batch est une méthode de traitement des requêtes utilisée pour traiter plusieurs lignes ensemble (par conséquent, le terme batch) plutôt qu’une seule ligne à la fois. Le traitement en mode Batch utilise des algorithmes optimisés pour les processeurs multicœurs et un débit de mémoire accru sur du matériel moderne. Le mode Batch peut être utilisé par un ensemble d’opérateurs pour les objets rowstore et columnstore. Pour plus d’informations, consultez le Guide d’architecture de traitement des requêtes.

Descriptions des opérateurs

Cette section contient la description des opérateurs logiques et physiques. Vous pouvez afficher les propriétés des plans et opérateurs de requête à l’aide du volet Propriétés dans la vue Plan de requête de SQL Server Management Studio (SSMS) et d’Azure Data Studio.

Conseil

Chaque fois qu’une icône de plan d’exécution graphique donnée possède un cercle jaune avec deux flèches de droite à gauche, cela signifie que l’opérateur est exécuté en parallèle. Pour plus d’informations sur le parallélisme, consultez le Guide de l’architecture des threads et des tâches.

Icône Opérateur Showplan Description
Jointure adaptative L’opérateur de Jointure adaptative permet de choisir de différer une méthode de jointure hachée ou de jointure de boucles imbriquées tant que la première entrée n’a pas été analysée.

La jointure adaptative est un opérateur physique. Pour plus d'informations, consultez Compréhension des jointures adaptatives.
Regroupement L’opérateur Aggregate calcule une expression contenant MIN, , SUMMAX, , ou .AVGCOUNT

Aggregate est un opérateur logique et physique.
Arithmetic Expression L'opérateur Arithmetic Expression calcule une nouvelle valeur à partir de valeurs existantes dans une ligne. L’expression arithmétique n’est pas utilisée dans les versions plus récentes de SQL Server.
Assert L'opérateur Assert vérifie une condition. Par exemple, il valide l'intégrité référentielle ou garantit qu'une sous-requête scalaire retourne une ligne. Pour chaque ligne d’entrée, l’opérateur Assert évalue l’expression dans le volet Propriétés du plan d’exécution. Si cette expression prend la NULLvaleur , la ligne est transmise via l’opérateur Assert et l’exécution de la requête se poursuit. Si cette expression prend la valeur non null, l’erreur appropriée est générée.

Assert est un opérateur physique.
Attribuer L'opérateur Assign assigne la valeur d'une expression ou une constante à une variable.

Assign est un élément de langage.
Aucun Async Concat L’opérateur Async Concat est utilisé seulement dans les requêtes distantes (requêtes distribuées). Elle a n enfants et un nœud parent. En règle générale, certains des enfants sont des ordinateurs distants qui participent à une requête distribuée. Async Concat émet des appels Open() à tous les enfants simultanément et applique ensuite une bitmap à chacun d’eux. Pour chaque bit qui est un 1, Async Concat envoie les lignes de sortie au nœud parent à la demande.
Bitmap SQL Server utilise l’opérateur Bitmap pour implémenter le filtrage bitmap dans les plans de requête parallèles. Le filtrage bitmap accélère l’exécution des requêtes en éliminant les lignes avec des valeurs clés qui ne peuvent pas produire d’enregistrements de jointure avant de passer des lignes via un autre opérateur, tel que l’opérateur Parallelism . 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. 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. 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é.

Bitmap est un opérateur physique.
Bitmap Create L’opérateur Bitmap Create apparaît dans la sortie du plan d’affichage où les bitmaps sont générées.

Bitmap Create est un opérateur logique.
Aucun Branch Repartition Dans un plan de requête parallèle, il existe parfois des régions conceptuelles composées d'itérateurs. Tous les itérateurs de ces régions peuvent être exécutés par des threads parallèles. Les régions elles-mêmes doivent être exécutées séquentiellement. Certains itérateurs Parallelism d'une région distincte sont appelés Branch Repartition. L'itérateur Parallelism situé à la limite de deux régions de ce type est appelé Segment Repartition.

Branch Repartition et Segment Repartition sont des opérateurs logiques.
Broadcast Broadcast comporte un nœud enfant et n nœuds parents. Broadcast envoie ses lignes d'entrée à plusieurs consommateurs à la demande. Chaque consommateur obtient toutes les lignes. Par exemple, si tous les consommateurs sont des côtés de build d’une jointure de hachage, n copies des tables de hachage sont générées.
Build Hash Indique la génération d’une table de hachage de lots pour un index columnstore optimisé en mémoire.

S’applique uniquement à : SQL Server 2012 (11.x).
Clustered Index Delete L’opérateur Clustered Index Delete supprime les lignes de l’index cluster spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphique et XML. Si un seekPredicate ou un prédicat est présent, seules les lignes qui répondent au prédicat sont supprimées.

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Clustered Index Delete est un opérateur physique.
Clustered Index Insert L’opérateur d’insertion d’index cluster insère des lignes de son entrée dans l’index cluster spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphiques et XML. Le plan d’affichage XML inclut les propriétés SetPredicate et ColumnReference , qui peuvent être utilisées pour déterminer la valeur à laquelle chaque colonne est définie. Si l’insertion d’index cluster n’a pas d’enfants pour les valeurs d’insertion, la ligne insérée est extraite de l’opérateur Insert lui-même.

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

L’insertion d’index en cluster est un opérateur physique.
Clustered Index Merge L'opérateur Clustered Index Merge applique un flux de données de fusion à un index cluster. L’opérateur supprime, met à jour ou insère des lignes de l’index cluster spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphique et XML. L’opération réelle effectuée dépend de la valeur d’exécution de la propriété ActionColumn .

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Clustered Index Merge est un opérateur physique.
Clustered Index Scan L’opérateur Analyse d’index cluster analyse l’index cluster spécifié dans la propriété Object, répertorié dans le volet Propriétés des plans d’affichage graphique et XML. Lorsqu’un prédicat facultatif est présent, seules les lignes qui répondent au prédicat sont retournées. Si la propriété Order dans le volet Propriétés ou le plan d’affichage XML a la valeur True, 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és. Si la propriété Ordered a la valeur False, la Moteur de base de données analyse l’index de la manière optimale, sans nécessairement trier la sortie.

Clustered Index Scan est un opérateur logique et physique.
Clustered Index Seek L'opérateur Clustered Index Seek utilise la fonction recherche des index pour extraire des lignes d'un index cluster. La propriété Object , répertoriée dans le volet Propriétés des showplans graphiques et XML, contient le nom de l’index cluster utilisé. Le SeekPredicate contient le prédicat de la recherche. Le Moteur de base de données utilise l’index pour traiter uniquement les lignes qui répondent au SeekPredicate. Il peut également inclure une propriété De prédicat où le Moteur de base de données est évalué par rapport à toutes les lignes qui répondent au SeekPredicate, mais cela est facultatif et n’utilise pas d’index pour terminer ce processus.

Si la propriété Order dans le volet Propriétés ou le plan d’affichage XML a la valeur True, 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és. Si la propriété Ordered a la valeur False, la Moteur de base de données recherche l’index de la manière optimale, sans nécessairement trier la sortie. Exiger que la sortie conserve son ordre peut être moins efficace que la production de sortie non triée.

Clustered Index Seek est un opérateur logique et physique.
Clustered Index Update L’opérateur Clustered Index Update met à jour les lignes d’entrée de l’index cluster spécifiés dans la propriété Object , répertoriées dans le volet Propriétés des plans d’affichage graphique et XML. Si la propriété Predicate est présente, seules les lignes qui répondent à ce prédicat sont mises à jour. Si la propriété SetPredicate est présente, chaque colonne mise à jour est définie sur cette valeur. Si la propriété DefineValue est présente, les valeurs définies par cet opérateur sont répertoriées. Ces valeurs peuvent être référencées dans la SET clause ou ailleurs dans cet opérateur et ailleurs dans cette requête.

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Clustered Index Update est un opérateur logique et physique.
Collapse L'opérateur Collapse permet d'optimiser le traitement de mise à jour des données. 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. Le volet Propriétés contient un groupe par prédicat qui spécifie une liste de colonnes clés. Si le processeur de requêtes rencontre des lignes adjacentes qui suppriment et insèrent les mêmes valeurs de clé, elles remplacent ces opérations distinctes par une seule opération de mise à jour plus efficace.

Collapse est un opérateur logique et physique.
Columnstore Index Delete L’opérateur Columnstore Index Delete représente la suppression de lignes de l’index columnstore spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphiques et XML. La suppression se produit via la suppression d’index cluster pour un index columnstore cluster et via l’opérateur Index Delete pour un index columnstore non cluster. Le type d’index (Clustered, NonClustered ou ViewNonClustered) est spécifié dans la propriété IndexKind dans le showplan XML. SeekPredicate n’est pas pris en charge pour une suppression d’index Columnstore. Les lignes à supprimer sont lues à partir d’un opérateur enfant.

Columnstore Index Delete est un opérateur physique.
Insertion d’index Columnstore L’opérateur Columnstore Index Insert représente l’insertion de lignes à partir de son entrée dans l’index columnstore spécifié dans la propriété Object , répertoriée dans le volet Propriétés des showplans graphiques et XML. L’insertion se produit via l’insertion d’index cluster pour un index columnstore cluster et via l’opérateur Index Insert pour un index columnstore non cluster. Le type d’index (Clustered, NonClustered ou ViewNonClustered) est spécifié dans la propriété IndexKind dans le showplan XML. Le plan d’affichage XML inclut les propriétés SetPredicate et ColumnReference , qui peuvent être utilisées pour déterminer la valeur à laquelle chaque colonne est définie.

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Columnstore Index Insert est un opérateur physique.
Fusion d’index Columnstore La fusion d’index Columnstore représente l’application d’un flux de données de fusion à l’aide de l’opérateur Clustered Index Merge . L’opérateur supprime, met à jour ou insère des lignes de l’index columnstore cluster spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphiques et XML. L’opération réelle effectuée dépend de la valeur d’exécution de la propriété ActionColumn .

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Columnstore Index Merge est un opérateur physique.
Analyse d'index columnstore L’opérateur Columnstore Index Scan représente une analyse de l’index columnstore spécifié dans la propriété Object , répertoriée dans le volet Propriétés des showplans graphiques et XML. L’analyse se produit via l’analyse d’index cluster pour un index columnstore cluster, et via l’opérateur Analyse d’index pour un index columnstore non cluster. Le type d’index (Clustered, NonClustered ou ViewNonClustered) est spécifié dans la propriété IndexKind dans le showplan XML. Lorsqu’un prédicat facultatif est présent, seules les lignes qui répondent au prédicat sont retournées. La propriété SeekPredicate est disponible uniquement pour un index columnstore partitionné, et uniquement des conditions d’égalité ou d’inégalité. Si la colonne partitionnée se trouve dans le prédicat de requête, l’élimination de partition peut réduire le nombre de rowgroups à analyser.

Columnstore Index Scan est un opérateur physique.
Mise à jour de l’index Columnstore L’opérateur Columnstore Index Update représente une mise à jour vers une ou plusieurs lignes de l’index columnstore spécifié dans la propriété Object , répertoriée dans le volet Propriétés des plans d’affichage graphiques et XML. Mises à jour se produisent via le Opérateur Clustered Index Update pour un index columnstore cluster et via l’opérateur Index Update pour un index columnstore non cluster. Le type d’index (Clustered, NonClustered ou ViewNonClustered) est spécifié dans la propriété IndexKind dans le showplan XML. SeekPredicate n’est pas pris en charge pour une mise à jour d’index Columnstore. Les lignes à mettre à jour sont lues à partir d’un opérateur enfant. Si la propriété SetPredicate est présente, chaque colonne mise à jour est définie sur cette valeur. Si la propriété DefineValue est présente, les valeurs définies par cet opérateur sont répertoriées. Ces valeurs peuvent être référencées dans la SET clause ou ailleurs dans cet opérateur et ailleurs dans cette requête.

Remarque : les modifications apportées aux index cluster peuvent affecter les index non cluster.

Columnstore Index Update est un opérateur physique.
Compute Scalar L'opérateur Compute Scalar évalue une expression pour produire une valeur scalaire calculée. Cela peut ensuite être retourné à l’utilisateur, référencé ailleurs dans la requête, ou les deux. Les deux sont utilisés par exemple dans un prédicat de filtre ou de jointure.

Les opérateurs Scalaires de calcul qui apparaissent dans les plans d’exécution générés par SET STATISTICS XML peuvent ne pas contenir l’élément RunTimeInformation . Dans les plans d’affichage graphiques, les lignes réelles, les rebinds réels et les rembobinages réels 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 Studio. Lorsque cela se produit, cela signifie que bien que ces opérateurs aient été utilisés dans le plan de requête compilé, leur travail a été effectué par d’autres opérateurs dans le plan de requête d’exécution. Le nombre d’exécutions dans la sortie du plan d’exécution générée par SET STATISTICS PROFILE est équivalent à la somme des rebinds et des rembobinages dans les plans d’exécution générés par SET STATISTICS XML.

Compute Scalar est un opérateur logique et physique.
Concatenation L'opérateur Concatenation analyse plusieurs entrées et renvoie chaque ligne analysée. La concaténation est généralement utilisée pour implémenter la construction Transact-SQL UNION ALL . L'opérateur physique Concatenation a deux entrées ou plus, et une sortie. 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 est un opérateur logique et physique.
Conditionnel (If and While) L’opérateur conditionnel effectue le traitement conditionnel en fonction d’une ou WHILE d’une IF boucle. Si et While sont des éléments de langage.
Constant Scan L'opérateur Constant Scan introduit une ou plusieurs lignes de constante dans une requête. 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 . L’analyse constante peut générer une ou plusieurs lignes avec zéro ou plusieurs colonnes.
Convert L'opérateur Convert convertit une expression d'un type de données scalaire en un autre.

Convert est un élément de langage.
Cross 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).

Cross Join est un opérateur logique.
Curseur 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. 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. Chaque étape de l'exécution d'un curseur implique un opérateur physique. Les opérateurs logiques décrivent une propriété du curseur, par exemple, le curseur est en lecture seule.

Les opérateurs logiques incluent asynchrone, optimiste, principal, lecture seule, verrous de défilement, secondaires et synchrones.

Les opérateurs physiques incluent Dynamic, Fetch Query, Keyset, Population Query, Refresh Query et Snapshot.
Declare L’opérateur Declare alloue une variable locale dans le plan de requête.

Declare est un élément de langage.
Supprimer L’opérateur Delete supprime des lignes (d’un objet) qui répondent au prédicat facultatif dans le volet Propriétés .
Deleted Scan Dans les déclencheurs, l’opérateur Deleted Scan analyse la table supprimée .
Aucun Distinct L'opérateur Distinct supprime les doublons d'un ensemble de lignes ou d'une collection de valeurs.

Distinct est un opérateur logique.
Aucun Distinct Sort L’opérateur logique De tri distinct analyse l’entrée, supprime les doublons et trie par les colonnes spécifiées dans l’ordre distinct par prédicat du volet Propriétés .

Distinct Sort est un opérateur logique.
Distribute Streams L'opérateur Distribute Streams est utilisé uniquement dans les plans de requête parallèles. L'opérateur Distribute Streams ne mobilise qu'un seul flux d'entrée d'enregistrements et produit plusieurs flux de sortie. Le contenu et le format de l’enregistrement ne sont pas modifiés. Chaque enregistrement provenant du flux d'entrée apparaît dans l'un des flux de sortie. Cet opérateur conserve automatiquement l'ordre relatif des enregistrements d'entrée dans les flux de sortie. Habituellement, le hachage est utilisé pour définir à quel flux de sortie appartient un enregistrement d'entrée particulier.

Si la sortie est partitionnée, le volet Propriétés contient un prédicat de colonnes de partition et les colonnes de partitionnement.

Distribute Streams est un opérateur logique.
Dynamique L'opérateur Dynamic utilise un curseur capable de détecter toutes les modifications effectuées par d'autres utilisateurs.
Eager 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 . 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. 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). 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.

Eager Spool est un opérateur logique.
Fetch Query L'opérateur Fetch Query extrait des lignes lorsqu'une extraction est émise à l'aide d'un curseur.
Filter L’opérateur Filter analyse l’entrée, retournant uniquement les lignes qui répondent à l’expression de filtre (prédicat) qui apparaît dans le volet Propriétés .
Aucun Flow Distinct L’opérateur Flow Distinct analyse l’entrée, supprimant les doublons. Alors que l’opérateur Distinct consomme toutes les entrées avant de produire une sortie, l’opérateur Flow Distinct retourne chaque ligne telle qu’elle est obtenue à partir de l’entrée (sauf si cette ligne est dupliquée, auquel cas elle est dis carte ed).

Flow Distinct est un opérateur logique.
Vérification des références de clé étrangère L’opérateur Foreign Key References Check effectue des case activée d’intégrité référentielle en place, en comparant la ligne modifiée aux lignes des tables de référence pour vérifier que la modification n’interrompt pas l’intégrité référentielle. 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.

Vérification des références de clé étrangère est un opérateur logique et physique.
Full 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). Il renvoie également les lignes de :

- Première entrée sans correspondance dans la deuxième entrée.

- Deuxième entrée sans correspondance dans la première entrée.

L’entrée qui ne contient pas les valeurs correspondantes est retournée en tant que valeur Null.

Full Outer Join est un opérateur logique.
Gather Streams L'opérateur Gather Streams n'est utilisé que dans les plans de requête parallèle. 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. Le contenu et le format de l’enregistrement ne sont pas modifiés. Si l'opérateur conserve l'ordre, tous les flux d'entrée doivent alors être classés. Si la sortie est triée, le volet Propriétés contient un ordre par prédicat et les noms des colonnes ordonnées.

Gather Streams est un opérateur logique.
Hash 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. Un prédicat de hachage , avec une liste de colonnes utilisées pour créer une valeur de hachage, apparaît dans le volet Propriétés . 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. Si un prédicat résiduel est présent (identifié par RESIDUAL:() le volet Propriétés ), ce prédicat doit également être satisfait pour que les lignes soient considérées comme une correspondance. Son comportement dépend de l'opération logique exécutée :

- Pour toutes les jointures, utilisez la première entrée (en haut) pour générer la table de hachage et la deuxième entrée (inférieure) pour sonder la table de hachage. Les correspondances (ou non correspondances) de sortie sont dictées par le type de jointure. Si plusieurs jointures utilisent la même colonne de jointure, ces opérations sont regroupées dans une équipe de hachage.

- Pour les opérateurs distincts ou agrégés, utilisez l’entrée pour générer la table de hachage (en supprimant les doublons et en calculant toutes les expressions d’agrégation). Une fois la table de hachage construite, parcourez-la et sortez toutes les entrées.

- Pour l’opérateur union, utilisez la première entrée pour générer la table de hachage (en supprimant les doublons). 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.

Hash Match est un opérateur physique. Pour plus d'informations, consultez Compréhension des jointures hachées.
Suppression d’index L’opérateur Index Delete supprime les lignes de l’index non cluster spécifié dans le volet Propriétés .

Index Delete est un opérateur physique.
Index Insert L’opérateur Index Insert insère des lignes de son entrée dans l’index non cluster spécifié dans le volet Propriétés. Le volet Propriétés contient également un prédicat défini , qui indique la valeur à laquelle chaque colonne est définie.

Index Insert est un opérateur physique.
Index Scan L’opérateur Index Scan récupère toutes les lignes de l’index non cluster spécifié dans le volet Propriétés . Si un prédicat s’affiche dans le volet Propriétés, seules les lignes qui répondent au prédicat sont retournées.

Index Scan est un opérateur logique et physique.
Index Seek L'opérateur Index Seek utilise la capacité de recherche dans les index pour extraire des lignes d'un index non-cluster. Le volet Propriétés contient le nom de l’index non cluster utilisé. Il contient également le prédicat de recherche . La Moteur de base de données utilise l’index pour traiter uniquement les lignes qui répondent au prédicat de recherche. Il peut éventuellement inclure un prédicat où le Moteur de base de données est évalué par rapport à toutes les lignes qui répondent au prédicat de recherche (il n’utilise pas les index pour effectuer cette opération). Si le volet Propriétés contient la ORDERED clause, le processeur de requêtes a déterminé que les lignes doivent être retournées dans l’ordre dans lequel l’index non cluster les a triés. Si la ORDERED clause n’est pas présente, la Moteur de base de données recherche l’index de la manière optimale (ce qui ne garantit pas que la sortie est triée). Permettre à la sortie de conserver son classement peut être moins efficace que la production de sortie non triée.

Index Seek est un opérateur logique et physique.
Index spool L’opérateur Index Spool contient un prédicat de recherche dans le volet Propriétés . 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. Cela vous permet d’utiliser la fonctionnalité de recherche d’index pour générer uniquement les lignes qui répondent au prédicat de recherche . 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.

Index Spool est un opérateur physique.
Mise à jour d’index L’opérateur physique Index Update met à jour les lignes de son entrée dans l’index non cluster spécifié dans le volet Propriétés . Si un prédicat défini est présent, chaque colonne mise à jour est définie sur cette valeur.

Index Update est un opérateur physique.
Inner Join L’opérateur Jointure interne retourne chaque ligne qui satisfait le prédicat de jointure de la première entrée (supérieure) avec la deuxième entrée (inférieure).

Inner Join est un opérateur logique.
Insérer L’opérateur Insert insère chaque ligne de son entrée dans l’objet spécifié dans le volet Propriétés . L'opérateur physique est l'opérateur Table Insert, Index Insertou Clustered Index Insert .

Insert est un opérateur logique.
Inserted Scan Dans les déclencheurs, l’opérateur Inserted Scan analyse la table insérée .

Inserted Scan est un opérateur logique et physique.
Intrinsic L’opérateur intrinsèque appelle une fonction Transact-SQL interne.

Intrinsic est un élément de langage.
Iterator L’icône itérateur catchall s’affiche lorsqu’une icône appropriée pour l’itérateur est introuvable par la logique qui produit des plans d’affichage graphiques. L’icône catchall n’indique pas nécessairement une condition d’erreur.
Key Lookup L'opérateur Key Lookup est une recherche de signet sur une table avec un index cluster. Le volet Propriétés contient le nom de l’index cluster et la clé de clustering utilisée pour rechercher la ligne dans l’index cluster. Key Lookup est toujours accompagné par un opérateur Nested Loops . Si la WITH PREFETCH clause apparaît dans le volet Propriétés , le processeur de requêtes a déterminé qu’il est optimal d’utiliser la prérécupération asynchrone (lecture anticipée) lors de la recherche de signets dans l’index cluster.

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. Par exemple, l'ajout d'un index explicatif peut améliorer les performances des requêtes.
Keyset L’opérateur Keyset utilise un curseur qui peut voir les mises à jour, mais pas les insertions, effectuées par d’autres.
Language Element L’icône catchall de l’élément language s’affiche lorsqu’une icône appropriée pour l’itérateur est introuvable par la logique qui produit des plans d’affichage graphiques. L’icône catchall n’indique pas nécessairement une condition d’erreur.
Lazy 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 . 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. 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). 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.

Lazy Spool est un opérateur logique.
Aucun Left Anti Semi Join L’opérateur Anti semi-jointure gauche retourne chaque ligne de la première entrée (en haut) lorsqu’il n’y a aucune ligne correspondante dans la deuxième entrée (inférieure). Si aucun prédicat de jointure n’existe dans le volet Propriétés , chaque ligne est une ligne correspondante.

Left Anti Semi Join est un opérateur logique.
Aucun Left Outer Join L’opérateur Left Outer Join retourne chaque ligne qui satisfait le prédicat de jointure de la première entrée (en haut) avec la deuxième entrée (inférieure). Elle retourne également toutes les lignes de la première entrée qui n’ont aucune ligne correspondante dans la deuxième entrée. Les lignes sans correspondance de la seconde entrée sont renvoyées comme valeurs nulles. Si aucun prédicat de jointure n’existe dans le volet Propriétés , chaque ligne est une ligne correspondante.

Left Outer Join est un opérateur logique.
Aucun Left Semi Join L’opérateur semi-jointure gauche retourne chaque ligne de la première entrée (en haut) lorsqu’il existe une ligne correspondante dans la deuxième entrée (inférieure). Si aucun prédicat de jointure n’existe dans le volet Propriétés , chaque ligne est une ligne correspondante.

Left Semi Join est un opérateur logique.
Log Row Scan L'opérateur Log Row Scan analyse le journal des transactions.

Log Row Scan est un opérateur logique et physique.
Merge 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. Cet opérateur apparaît généralement avant un ou plusieurs opérateurs Scalaires de calcul sur des opérateurs d’analyse constante, qui construisent les intervalles (représentés sous forme de colonnes dans une ligne) que cet opérateur fusionne.

Merge Interval est un opérateur logique et physique.
Merge 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.

Dans le volet Propriétés , l’opérateur De jointure de fusion contient un prédicat de fusion si l’opération effectue une jointure un-à-plusieurs, ou un prédicat de fusion plusieurs-à-plusieurs si l’opération effectue une jointure plusieurs-à-plusieurs. Le volet Propriétés inclut également une liste séparée par des virgules des colonnes utilisées pour effectuer l’opération. 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. La jointure de fusion 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 qu’une jointure de fusion et un regroupement avec cumul.

Merge Join est un opérateur physique. Pour plus d'informations, consultez Compréhension des jointures de fusion.
Nested 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.

Les jointures de boucle imbriquées effectuent une recherche sur la table interne pour chaque ligne de la table externe, généralement à l’aide d’un 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. Toutes les lignes qui répondent au prédicat (facultatif) dans le volet Propriétés sont retournées en fonction de l’opération logique en cours d’exécution. Lorsque l’attribut OPTIMIZED est défini Truesur , cela signifie qu’une boucle imbriquée optimisée (ou tri par lot) est utilisée.

Nested Loops est un opérateur physique. Pour plus d'informations, consultez Compréhension des jointures de boucles imbriquées.
Aucun Online Index Insert L’opérateur Insertion d’index en ligne indique qu’une opération d’index (créer, modifier ou supprimer) est effectuée en ligne. Autrement dit, les données de la table sous-jacente restent disponibles aux utilisateurs pendant l'opération d'index.

L’insertion d’index en ligne est un opérateur physique.
Aucun Parallélisme 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. Le volet Propriétés peut contenir un prédicat de colonnes de partition avec une liste séparée par des virgules des colonnes partitionnée. Le volet Propriétés peut également contenir un ordre par prédicat, répertoriant les colonnes pour conserver l’ordre de tri pendant le partitionnement.

Remarque : Si une requête a été compilée en tant que requête parallèle, mais au moment de l’exécution, elle est exécutée en tant que requête série, la sortie showplan générée ou SET STATISTICS XML à l’aide de l’option Inclure le plan d’exécution réel dans SQL Server Management Studio ne contient pas l’élément RunTimeInformation de l’opérateur Parallelism . En SET STATISTICS PROFILE sortie, le nombre réel de lignes et le nombre réel d’exécutions affichent des zéros pour l’opérateur Parallelism . Lorsque l’une ou l’autre condition se produit, cela signifie que l’opérateur Parallelism n’a été utilisé que pendant la compilation des requêtes et non dans le plan de requête d’exécution. Parfois, les plans de requête parallèles sont exécutés en série s’il existe une charge simultanée élevée sur le serveur.

Parallelism est un opérateur physique. Pour plus d’informations sur l’opérateur Parallelism, consultez l’opérateur Parallelism.
Parameter Table Scan L'opérateur Parameter Table Scan analyse une table qui agit comme paramètre dans la requête en cours. En règle générale, cela est utilisé pour INSERT les requêtes au sein d’une procédure stockée.

Parameter Table Scan est un opérateur logique et physique.
Aucun Partial Aggregate Partial Aggregate est utilisé dans des plans parallèles. Il applique une fonction d’agrégation au plus grand nombre de lignes d’entrée possible afin que l’écriture sur disque (appelée « déversement ») n’est pas nécessaire. Hash Match constitue l’unique opérateur physique (itérateur) qui implémente une agréation partielle.

Partial Aggregate est un opérateur logique.
Population Query L'opérateur Population Query permet de renseigner la table de travail d'un curseur lorsque le curseur est ouvert.
Refresh Query L'opérateur Refresh Query extrait les données courantes des lignes du tampon d'extraction.
Remote Delete L'opérateur Remote Delete supprime les lignes d'entrée d'un objet distant.

Remote Delete est un opérateur logique et physique.
Remote Index Scan L’opérateur Remote Index Scan analyse l’index distant spécifié dans le volet Propriétés .

Remote Index Scan est un opérateur logique et physique.
Remote Index Seek L'opérateur Remote Index Seek utilise les capacités de recherche d'un objet d'index distant pour extraire des lignes. Le volet Propriétés contient le nom de l’index distant utilisé et le prédicat de recherche .

Remote Index Seek est un opérateur logique et physique.
Remote Insert L'opérateur Remote Insert insère des lignes d'entrée dans un objet distant.

Remote Insert est un opérateur logique et physique.
Remote Query L'opérateur Remote Query soumet une requête à une source distante. Le texte de la requête envoyée au serveur distant s’affiche dans le volet Propriétés .

Remote Query est un opérateur logique et physique.
Remote Scan L'opérateur Remote Scan analyse un objet distant. Le nom de l’objet distant apparaît dans le volet Propriétés .

Remote Scan est un opérateur logique et physique.
Remote Update L'opérateur Remote Update met à jour les lignes d'entrée dans un objet distant.

Remote Update est un opérateur logique et physique.
Repartition Streams L'opérateur Repartition Streams (ou itérateur d’échange) consomme plusieurs flux et produit plusieurs flux d'enregistrements. Le contenu et le format de l’enregistrement ne sont pas modifiés. Si l'optimiseur de requête utilise un filtre bitmap, le nombre de lignes dans le flux de sortie est réduit. Chaque enregistrement d'un flux d'entrée est placé dans un flux de sortie. 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. Si la sortie est partitionnée, le volet Propriétés contient un prédicat de colonnes de partition et les colonnes de partitionnement. Si la sortie est triée, le volet Propriétés contient un ordre par prédicat et les colonnes en cours d’ordre. Cet opérateur n'est utilisé que dans les plans de requête en parallèle.

Repartition Streams est un opérateur logique.
Résultat L'opérateur Result contient les données retournées à la fin d'un plan de requête. Il s’agit généralement de l’élément racine d’un plan d’exposition.

Result est un élément de langage.
RID Lookup RID Lookup est une recherche de signet sur un segment utilisant un identificateur de ligne fourni (RID, Row Identifier). Le volet Propriétés contient l’étiquette de signet utilisée pour rechercher la ligne dans la table et le nom de la table dans laquelle la ligne est recherchée. La recherche RID est toujours accompagnée d’un NESTED LOOP JOIN.

RID Lookup est un opérateur physique. Pour plus d’informations sur les recherches de signets, consultez Read Committed et Bookmark Lookup.
Aucun Right Anti Semi Join L’opérateur Anti semi-jointure droite génère chaque ligne de la deuxième entrée (en bas) lorsqu’une ligne correspondante dans la première entrée (en haut) n’existe pas. Une ligne correspondante est définie comme une ligne qui satisfait le prédicat dans le volet Propriétés (si aucun prédicat n’existe, chaque ligne est une ligne correspondante).

Right Anti Semi Join est un opérateur logique.
Aucun Right 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). Elle retourne également toutes les lignes de la deuxième entrée qui n’avaient pas de lignes correspondantes dans la première entrée, jointes à NULL. Si aucun prédicat de jointure n’existe dans le volet Propriétés , chaque ligne est une ligne correspondante.

Right Outer Join est un opérateur logique.
Aucun Right Semi Join L’opérateur Droite semi-jointure retourne chaque ligne de la deuxième entrée (en bas) lorsqu’il existe une ligne correspondante dans la première entrée (en haut). Si aucun prédicat de jointure n’existe dans le volet Propriétés , chaque ligne est une ligne correspondante.

Right Semi Join est un opérateur logique.
Row 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. Cet opérateur est utilisé lorsqu’il est important de case activée pour l’existence de lignes, plutôt que les données contenues dans les lignes. Par exemple, si un opérateur De boucles imbriquées effectue une opération semi-jointure gauche et que le prédicat de jointure s’applique à l’entrée interne, un pool de nombres de lignes peut être placé en haut de l’entrée interne de l’opérateur Boucles imbriquées. L’opérateur Boucles imbriquées peut ensuite déterminer le nombre de lignes générées par le pool de lignes (car les données réelles du côté interne ne sont pas nécessaires) pour déterminer s’il faut retourner la ligne externe.

Row Count Spool est un opérateur physique.
Aucun Segment Repartition Dans un plan de requête parallèle, il existe parfois des régions conceptuelles composées d'itérateurs. Tous les itérateurs de ces régions peuvent être exécutés par des threads parallèles. Les régions elles-mêmes doivent être exécutées séquentiellement. Certains itérateurs Parallelism d'une région distincte sont appelés Branch Repartition. L'itérateur Parallelism situé à la limite de deux régions de ce type est appelé Segment Repartition.

Branch Repartition et Segment Repartition sont des opérateurs logiques.
Segment L’opérateur Segment divise le jeu d’entrée en segments en fonction de la valeur d’une ou plusieurs colonnes. Ces colonnes apparaissent en tant qu'arguments dans l'opérateur Segment . L'opérateur génère ensuite un segment à la fois.

Segment est un opérateur physique et logique.
Sequence Project L'opérateur Sequence Project ajoute des colonnes pour effectuer des calculs sur un jeu ordonné. Il divise le jeu d'entrée en segments en fonction de la valeur d'une ou plusieurs colonnes. L'opérateur génère ensuite un segment à la fois. Ces colonnes s'affichent en tant qu'arguments dans l'opérateur Sequence Project .

Sequence Project est un opérateur logique et physique.
Séquence L'opérateur Sequence gère des plans de mise à jour étendus. Il exécute, sur le plan fonctionnel, chaque entrée en séquence (de haut en bas). Chaque entrée est généralement une mise à jour d'un objet différent. Il ne retourne que les lignes provenant de sa dernière entrée (du bas).

Sequence est un opérateur logique et physique.
Capture instantanée L’opérateur d’instantané crée un curseur qui ne voit pas les modifications apportées par d’autres utilisateurs.
Sort L'opérateur Sort trie toutes les lignes entrantes. Le volet Propriétés contient un ordre distinct par prédicat si les doublons sont supprimés par cette opération, ou un ordre par prédicat avec une liste séparée par des virgules des colonnes triées. Les colonnes sont précédées de la valeur ASC si les colonnes sont triées par ordre croissant, ou la valeur DESC si les colonnes sont triées dans l’ordre décroissant.

Sort est un opérateur logique et physique.
Fractionné L'opérateur Split est utilisé pour optimiser le traitement des mises à jour. Il divise chaque opération de mise à jour en opérations DELETE et INSERT.

L'opérateurSplit est un opérateur logique et physique.
Spool L'opérateur Spool enregistre un résultat de requête intermédiaire dans la base de données tempdb .
Stream 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. 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. L'opérateur Stream Aggregate exige que l'entrée suive l'ordre des colonnes dans ses groupes. L’optimiseur utilise un opérateur de tri avant cet opérateur si les données ne sont pas déjà triées en raison d’un opérateur de tri précédent, ou en raison d’une recherche ou d’une analyse d’index ordonnés. Dans l’instruction ou le SHOWPLAN_ALL plan d’exécution graphique dans SQL Server Management Studio, les colonnes du groupe par prédicat sont répertoriées dans le volet Propriétés et les expressions d’agrégation sont répertoriées dans la colonne Valeurs définies.

Stream Aggregate est un opérateur physique.
Switch Switch est un type particulier d'itérateur de concaténation qui a n entrées. Une expression est associée à chaque opérateur Switch . 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. 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 .

Le commutateur est un opérateur logique et physique.
Table Delete L’opérateur Table Delete supprime des lignes de la table spécifiée dans le volet Propriétés du plan d’exécution de requête.

Table Delete est un opérateur physique.
Table Insert L’opérateur Table Insert insère des lignes de son entrée dans la table spécifiée dans le volet Propriétés du plan d’exécution de requête. Le volet Propriétés contient également un prédicat défini , qui indique la valeur à laquelle chaque colonne est définie. 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.

Table Insert est un opérateur physique.
Table Merge L'opérateur Table Merge applique un flux de données de fusion à un tas. L’opérateur supprime, met à jour ou insère des lignes dans la table spécifiée dans le volet Propriétés de l’opérateur. L’opération réelle effectuée dépend de la valeur d’exécution de la propriété ActionColumn

Table Merge est un opérateur physique.
Table Scan L’opérateur Analyse de table récupère toutes les lignes de la table spécifiée dans le volet Propriétés du plan d’exécution de requête. Si un prédicat d’emplacement s’affiche dans le volet Propriétés , seules les lignes qui répondent au prédicat sont retournées.

Table Scan est un opérateur logique et physique.
Table 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. 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.

Table Spool est un opérateur physique.
Table Update L’opérateur Table Update met à jour les lignes d’entrée de la table spécifiées dans le volet Propriétés du plan d’exécution de requête. Le prédicat défini détermine la valeur de chaque colonne mise à jour. Ces valeurs peuvent être référencées dans la SET clause ou ailleurs dans cet opérateur, et ailleurs dans cette requête.

Table Update est un opérateur physique.
Table-valued Function L’opérateur Fonction table évalue une fonction table (Transact-SQL ou CLR) et stocke les lignes obtenues dans la base de données tempdb. Lorsque les itérateurs parents demandent les lignes, la fonction table renvoie les lignes de 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 . Lafonction table peut être évaluée avec différentes valeurs de paramètres :

- 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. D’autres paramètres d’entrée peuvent restreindre les nœuds XML retournés à un sous-ensemble de document XML.

- 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 est un opérateur logique et physique.
Top 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. Le volet Propriétés peut contenir une liste des colonnes qui sont case activée pour les liens. Dans les plans de mise à jour, l'opérateur Top renforce les limites du nombre de lignes.

Top est un opérateur logique et physique.
Aucun Top 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. Pour les petites valeurs de N, le moteur d’exécution de requête SQL Server tente d’effectuer toute l’opération de tri en mémoire. Pour les valeurs importantes de N, le moteur d’exécution de requête passe à la méthode de tri plus générique vers laquelle N n’est pas un paramètre.
UDX Les opérateurs étendus (UDX) implémentent l’une des nombreuses opérations XQuery et XPath dans SQL Server.

- L’opérateur étendu (UDX) FOR XML est utilisé pour sérialiser le jeu de lignes relationnelles qu’il entre dans une représentation XML dans une seule colonne BLOB dans une ligne de sortie unique. Il s’agit d’un opérateur d’agrégation XML sensible aux ordres.

- L’opérateur étendu (UDX) XML SERIALIZER est un opérateur d’agrégation XML sensible à l’ordre. 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.

- L’opérateur étendu (UDX) XML FRAGMENT SERIALIZER est un type spécial de SERIALIZER XML utilisé pour le traitement des lignes d’entrée représentant des fragments XML insérés dans l’extension de modification de données d’insertion XQuery.

- L’opérateur étendu (UDX) XQUERY STRING évalue la valeur de chaîne XQuery des lignes d’entrée représentant des nœuds XML. Il s’agit d’un opérateur d’agrégation de chaînes sensible à l’ordre. Il produit une ligne avec des colonnes représentant la valeur scalaire XQuery qui contient la valeur de chaîne de l'entrée.

- L’opérateur étendu (UDX) XQUERY LIST DECOMPOSER est un opérateur de décomposition de liste XQuery. Pour chaque ligne d’entrée représentant un nœud XML, elle produit une ou plusieurs lignes représentant chacune une scalaire XQuery contenant une valeur d’élément de liste si l’entrée est de type de liste XSD.

- L’opérateur étendu (UDX) XQUERY DATA évalue la fonction XQuery fn:data() sur l’entrée représentant des nœuds XML. Il s’agit d’un opérateur d’agrégation de chaînes sensible à l’ordre. Il génère une ligne avec des colonnes représentant des scalaires XQuery qui contiennent le résultat de fn:data().

- L’opérateur étendu XQUERY CONTAINS évalue la fonction XQuery fn:contains() sur l’entrée représentant des nœuds XML. Il s’agit d’un opérateur d’agrégation de chaînes sensible à l’ordre. Il génère une ligne avec des colonnes représentant des scalaires XQuery qui contiennent le résultat de fn:contains().

- L’opérateur étendu UPDATE XML NODE met à jour le nœud XML dans l’extension de modification de données XQuery dans la méthode sur le modify() type XML.

Les opérateurs UDX sont à la fois des opérateurs logiques et physiques.
Union L'opérateur Union analyse plusieurs entrées en sortant chaque ligne analysée et en supprimant les doublons.

Union est un opérateur logique.
Update L’opérateur Update met à jour chaque ligne de son entrée dans l’objet spécifié dans le volet Propriétés du plan d’exécution de requête.

Update est un opérateur logique. L'opérateur physique est Table Update, Index Updateou Clustered Index Update.
Window 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. Dans une requête, la OVER clause définit la fenêtre dans un jeu de résultats de requête et une fonction de fenêtre calcule ensuite une valeur pour chaque ligne de la fenêtre.

Window Spool est un opérateur logique et physique.

Remarque

De manière générale, la documentation SQL Server utilise le terme B-tree en référence aux index. Dans les index rowstore, SQL Server implémente une structure B+. Cela ne s’applique pas aux index columnstore ou aux magasins de données en mémoire. Pour plus d’informations, consultez le Guide de conception et d’architecture d’index SQL Server et Azure SQL.