Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 générer un plan de requête pour créer le résultat spécifié dans la requête ou pour effectuer 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 des instructions SET SHOWPLAN, des options de plan d’exécution graphique dans SQL Server Management Studio ou des classes d’événements Showplan SQL Server Profiler.
Les opérateurs sont classés comme des 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 conceptuellement quelle opération doit être effectuée.
Opérateurs physiques
Les opérateurs physiques implémentent l’opération décrite par les opérateurs logiques. Chaque opérateur physique est un objet ou une routine qui effectue une opération. Par exemple, certains opérateurs physiques accèdent aux colonnes ou lignes d’une table, d’un index ou d’une vue. D’autres opérateurs physiques effectuent d’autres opérations telles que des calculs, des agrégations, des vérifications d’intégrité des données ou des jointures. Les opérateurs physiques ont des coûts associés.
Les opérateurs physiques initialisent, collectent des données et ferment. Plus précisément, l’opérateur physique peut répondre aux trois appels de méthode suivants :
Init() : La méthode Init() entraîne l’initialisation d’un opérateur physique et la configuration de toutes les structures de données requises. L’opérateur physique peut recevoir de nombreux appels Init(), bien qu’en règle générale, un opérateur physique ne reçoit qu’un seul.
GetNext() : La méthode GetNext() permet à un opérateur physique d'obtenir la première ligne de données ou la suivante. L’opérateur physique peut recevoir zéro ou plusieurs appels GetNext( ).
Close() : la méthode Close() pousse un opérateur physique à effectuer ses propres opérations de nettoyage et à se mettre hors service. Un opérateur physique ne reçoit qu’un seul appel Close().
La méthode GetNext() retourne une ligne de données et le nombre de fois qu’elle est appelée est ActualRows dans la sortie Showplan produite à l’aide de SET STATISTICS PROFILE ON ou SET STATISTICS XML ON. Pour plus d’informations sur ces options SET, 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 que la méthode Init() est appelée. Sauf si un opérateur se trouve sur le côté interne d’une jointure de boucle, ActualRebinds est égal à un et ActualRewinds est égal à zéro. Si un opérateur se trouve sur la partie interne d’une jointure en boucle, la somme du nombre de rebinds et de rembobinages doit être égale au nombre de lignes traitées sur la partie externe de la jointure. Une liaison signifie qu’un ou plusieurs des paramètres corrélés de la jointure ont changé et que le côté interne 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 showplan XML produite à l’aide de SET STATISTICS XML ON. Elles sont remplies uniquement pour les opérateurs Surcharge d'index non cluster, Remote Query, Surcharge de comptage de lignes, Sort, Surcharge de table, et Fonction en valeur de table.
ActualRebinds et ActualRewinds peuvent également être complété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’elles sont absentes, le nombre estimé de lignes (EstimateRows) est comparable au nombre réel de lignes (ActualRows). Notez que 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 uniquement lorsque la sortie showplan est produite à l’aide de SET STATISTICS XML ON. Chaque fois qu’un opérateur physique atteint la fin de son flux de données, ce compteur est incrémenté par un. Un opérateur physique peut atteindre la fin de son flux de données zéro, un ou plusieurs fois. Comme pour les rebinds et les rembobinages, le nombre de fins d'analyse peut être supérieur à un uniquement si l'opérateur se trouve du côté interne d'une jointure en boucle. Le nombre de fins d'analyse doit être inférieur ou égal à la somme du nombre de resynchronisations et de rembobinages.
Mappage d’opérateurs physiques et logiques
L’optimiseur de requête crée un plan de requête en tant qu’arborescence composée d’opérateurs logiques. Une fois l’optimiseur de requête 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émentera un opérateur logique.
En règle générale, une opération logique peut être implémentée par plusieurs opérateurs physiques. Toutefois, dans de rares cas, un opérateur physique peut également implémenter plusieurs opérations logiques.
Descriptions des opérateurs
Cette section contient des descriptions des opérateurs logiques et physiques.
| Icône de plan d’exécution graphique | Showplan, opérateur | Descriptif |
|---|---|---|
| Aucun | Aggregate |
L’opérateur Aggregate calcule une expression contenant MIN, MAX, SUM, COUNT ou AVG. L’opérateur Aggregate peut être un opérateur logique ou un opérateur physique. |
|
Arithmetic Expression |
L’opérateur Arithmetic Expression calcule une nouvelle valeur à partir de valeurs existantes dans une ligne.
Arithmetic Expression n’est pas utilisé dans SQL Server 2014. |
|
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 la Argument colonne du plan d’exécution. Si cette expression prend la valeur NULL, la ligne est transmise par l’opérateur Assert et l’exécution de la requête se poursuit. Si cette expression prend la valeur d’une valeur non nulle, l’erreur appropriée est générée. L’opérateur Assert est un opérateur physique. |
|
Assign |
L’opérateur Assign affecte la valeur d’une expression ou d’une constante à une variable.
Assign est un élément de langage. |
| Aucun | Asnyc Concat |
L’opérateur Asnyc Concat est utilisé uniquement dans les requêtes distantes (requêtes distribuées). Il 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.
Asnyc Concat émet des open() appels à tous les enfants simultanément, puis applique une bitmap à chaque enfant. 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 de clé 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 d’opérateurs pour filtrer les lignes d’une deuxième table dans une autre partie de l’arborescence. En supprimant les lignes inutiles tôt dans la requête, les opérateurs suivants ont moins de lignes à utiliser, et les performances globales de la requête s’améliorent. L’optimiseur détermine quand une bitmap est suffisamment sélective pour être utile et dans laquelle les opérateurs doivent appliquer le filtre.
Bitmap est un opérateur physique. |
|
Bitmap Create |
L’opérateur Bitmap Create apparaît dans la sortie showplan où les bitmaps sont générées.
Bitmap Create est un opérateur logique. |
Icône Icône |
Bookmark 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 de clustering. La Argument colonne contient l’étiquette de signet utilisée pour identifier la ligne dans la table ou l’index en cluster. La Argument colonne contient également le nom de la table ou de l’index cluster dans lequel la ligne est recherchée. Si la clause WITH PREFETCH apparaît dans la Argument colonne, 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 la table ou l’index cluster.Bookmark Lookup n’est pas utilisé dans SQL Server 2014. Au lieu de cela, Clustered Index Seek et RID Lookup fournissent les fonctionnalités de recherche de signet. L’opérateur Key Lookup fournit également cette fonctionnalité. |
| Aucun | Branch Repartition |
Dans un plan de requête parallèle, il existe parfois des régions conceptuelles d’itérateurs. Tous les itérateurs au sein d’une telle région peuvent être exécutés par des threads parallèles. Les régions elles-mêmes doivent être exécutées en série.
Parallelism Certains itérateurs au sein d’une région individuelle sont appelés Branch Repartition. L’itérateur Parallelism à la limite de deux régions de ce type est appelé Segment Repartition.
Branch Repartition et Segment Repartition sont des opérateurs logiques. |
| Aucun | Broadcast |
Broadcast a un nœud enfant et n nœuds parents.
Broadcast envoie ses lignes d’entrée à plusieurs consommateurs selon les besoins. Chaque consommateur obtient toutes les lignes. Par exemple, si tous les consommateurs constituent les côtés d'une jointure de hachage, alors n copies des tables de hachage seront construites. |
|
Build Hash |
Indique la construction d'une table de hachage par lot pour un index columnstore optimisé pour la mémoire xVelocity. |
| Aucun | Cache |
Cache est une version spécialisée de l’opérateur Spool . Il stocke une seule ligne de données.
Cache est un opérateur logique.
Cache n’est pas utilisé dans SQL Server 2014. |
|
Clustered Index Delete |
L’opérateur Clustered Index Delete supprime les lignes de l’index cluster spécifié dans la colonne Argument du plan d’exécution de requête. Si un prédicat WHERE :() est présent dans la colonne Argument, seules les lignes qui répondent au prédicat sont supprimées.
Clustered Index Delete est un opérateur physique. |
Icône d’index clusterisé Icône |
Clustered 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. La colonne Argument contient également un prédicat SET :(), qui indique la valeur à laquelle chaque colonne est définie. Si Clustered Index Insert n'a pas d'éléments pour les valeurs d'insertion, l'élément inséré provient de l'opérateur Insert lui-même.
Clustered Index Insert est un opérateur physique. |
|
Fusion d’index clusterisé | L’opérateur de fusion d’index cluster 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 Argument colonne de l’opérateur. L’opération réelle effectuée dépend de la valeur d’exécution de la colonne ACTION spécifiée dans la Argument colonne de l’opérateur.
Clustered Index Merge est un opérateur physique. |
|
Clustered 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. Lorsqu’un prédicat WHERE :() facultatif est présent, seules les lignes qui répondent au prédicat sont retournées. Si la colonne Argument contient la clause ORDER, le processeur de requêtes a demandé que la sortie des lignes soit retournée dans l’ordre dans lequel l’index cluster l’a trié. Si la clause ORDER n’est pas présente, le moteur de stockage analyse l’index de manière optimale, sans nécessairement trier la sortie.
Clustered Index Scan est un opérateur logique et physique. |
Icône Icône |
Clustered Index Seek |
L’opérateur Clustered Index Seek utilise la possibilité de rechercher des index pour récupérer des lignes à partir d’un index cluster. La Argument colonne contient le nom de l’index cluster utilisé et le prédicat SEEK :(). Le moteur de stockage utilise l’index pour traiter uniquement les lignes qui répondent à ce prédicat SEEK :(). Il peut également inclure un prédicat WHERE :() où le moteur de stockage évalue par rapport à toutes les lignes qui répondent au prédicat SEEK :(), mais il est facultatif et n’utilise pas d’index pour terminer ce processus.Si la colonne contient la Argument clause ORDER, 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 clause ORDER n’est pas présente, le moteur de stockage recherche l’index de manière optimale, sans nécessairement trier la sortie. Permettre à la sortie de conserver son ordre peut être moins performant que de produire une sortie non triée. Lorsque le mot clé LOOKUP s’affiche, une recherche de signet est en cours d’exécution. Dans SQL Server 2008 et les versions suivantes, l'opérateur Key Lookup offre des fonctionnalités de recherche de signet.
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 dans l’index cluster spécifié dans la Argument colonne. Si un prédicat WHERE :() est présent, seules les lignes qui répondent à ce prédicat sont mises à jour. Si un prédicat SET :() est présent, chaque colonne mise à jour est définie sur cette valeur. Si un prédicat DEFINE :() est présent, les valeurs définies par cet opérateur sont répertoriées. Ces valeurs peuvent être référencées dans la clause SET ou ailleurs dans cet opérateur et ailleurs dans cette requête.
Clustered Index Update est un opérateur logique et physique. |
|
Collapse |
L'opérateur Collapse optimise le traitement des mises à jour. Lorsqu’une mise à jour est effectuée, elle peut être fractionnée (à l’aide de l’opérateur Split ) en une suppression et une insertion. La Argument colonne contient une clause GROUP BY :() 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é, il remplace ces opérations distinctes par une seule opération de mise à jour plus efficace.
Collapse est un opérateur logique et physique. |
|
Columnstore Index Scan |
L’opérateur Columnstore Index Scan analyse l’index columnstore spécifié dans la Argument colonne du plan d’exécution de requête. |
|
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. Un exemple de ces deux éléments se trouve dans un prédicat de filtre ou un prédicat de jointure.
Compute Scalar est un opérateur logique et physique.Compute Scalar les opérateurs qui apparaissent dans showplans 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. Notez également que le nombre d’exécutions dans la sortie Showplan générée par SET STATISTICS PROFILE équivaut à la somme des rebinds et des rewinds dans les plans d’exécution générés par SET STATISTICS XML. |
Icône |
Concaténation | L’opérateur concaténation analyse plusieurs entrées, retournant 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 concaténation a deux entrées ou plusieurs entrées et une sortie. La concaténation copie les lignes du premier flux d’entrée vers le flux de sortie, puis répète cette opération pour chaque flux d’entrée supplémentaire. La concaténation est un opérateur logique et physique. |
|
Constant Scan |
L’opérateur Constant Scan introduit une ou plusieurs lignes constantes 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. |
|
Convert |
L’opérateur Convert convertit un type de données scalaire en un autre.
Convert est un élément de langage. |
| Aucun | Cross Join |
L’opérateur Cross Join joint chaque ligne à partir de la première entrée (en haut) avec chaque ligne de la deuxième entrée (inférieure).
Cross Join est un opérateur logique. |
|
catchall |
L’icône 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. Il existe trois icônes catchall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les éléments de langage Transact-SQL). |
| Aucun | Curseur | Les opérateurs logiques et physiques du curseur sont utilisés pour décrire comment une requête ou une mise à jour impliquant des opérations de curseur est exécutée. Les opérateurs physiques décrivent l’algorithme d’implémentation physique utilisé pour traiter le curseur ; par exemple, à l’aide d’un curseur piloté par l’ensemble de 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, telle que le curseur est en lecture seule. Les opérateurs logiques incluent asynchrone, optimiste, primaire, lecture seule, verrous de défilement, secondaire et synchrone. 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. |
|
Delete |
L’opérateur Delete supprime de l'objet les lignes qui satisfont le prédicat facultatif dans la colonne Argument. |
|
Deleted Scan |
L’opérateur Deleted Scan analyse la table supprimée dans un déclencheur. |
| 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 Distinct Sort logique analyse l’entrée, en supprimant les doublons et en triant les colonnes spécifiées dans le prédicat DISTINCT ORDER BY :() de la Argument colonne.
Distinct Sort est un opérateur logique. |
|
Distribuer des flux | L’opérateur Distribution de flux est utilisé uniquement dans les plans de requête parallèles. L’opérateur Distribution de flux prend 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 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. En règle générale, le hachage est utilisé pour décider du flux de sortie auquel appartient un enregistrement d’entrée particulier. Si la sortie est partitionnée, la Argument colonne contient un prédicat PARTITION COLUMNS :() et les colonnes de partitionnement.
Distribuer des flux est un opérateur logique |
|
Dynamic |
L’opérateur Dynamic utilise un curseur qui peut voir toutes les modifications apportées par d’autres utilisateurs. |
|
Spool enthousiaste | L’opérateur Spool Eager accepte l’entrée entière, stockant chaque ligne dans un objet temporaire masqué stocké dans la tempdb base de données. Si l'opérateur est rembobiné (par exemple, par un opérateur Nested Loops) mais qu'aucune nouvelle liaison n'est nécessaire, les données mises en mémoire tampon sont utilisées au lieu de réanalyser l'entrée. Si la liaison est nécessaire, les données spooled sont ignorées et l’objet spool est reconstruit en réanalysant l’entrée (rebond). L’opérateur Spool désireux génère son fichier de spool de manière « impatiente » : 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 récupère les lignes lorsqu’une extraction est émise sur un curseur. |
|
Filtre | 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 la Argument colonne. |
| Aucun | Flow Distinct |
L’opérateur Flow Distinct logique analyse l’entrée, en supprimant les doublons. Alors que l’opérateur Distinct consomme toutes les entrées avant de produire une sortie, l’opérateur FlowDistinct retourne chaque ligne telle qu’elle est obtenue à partir de l’entrée (sauf si cette ligne est un doublon, auquel cas elle est ignorée). |
| Aucun | Full Outer Join |
L’opérateur Full Outer Join logique retourne chaque ligne répondant au prédicat de jointure à partir de la première entrée (supérieure) jointe avec chaque ligne de la deuxième entrée (inférieure). Elle retourne également des lignes à partir de :La première entrée qui n'avait pas de correspondance dans la deuxième entrée. -La deuxième entrée qui n'avait aucune 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. |
|
Collecter des flux | L’opérateur Collect Streams est utilisé uniquement dans les plans de requête parallèles. L’opérateur Collect Streams consomme plusieurs flux d’entrée et produit un seul flux de sortie d’enregistrements en combinant les flux d’entrée. Le contenu et le format de l’enregistrement ne sont pas modifiés. Si cet opérateur conserve l’ordre, tous les flux d’entrée doivent être ordonnés. Si la sortie est ordonnée, la Argument colonne contient un prédicat ORDER BY :() et les noms des colonnes ordonnées.
Collect Streams est un opérateur logique. |
|
Hash Match |
L’opérateur Hash Match génère une table de hachage en calculant une valeur de hachage pour chaque ligne à partir de son entrée de build. Un prédicat HASH :() avec une liste de colonnes utilisées pour créer une valeur de hachage apparaît dans la Argument colonne. Ensuite, pour chaque ligne de sonde (le cas échéant), elle calcule une valeur de hachage (à l’aide de la même fonction de hachage) et recherche dans la table de hachage les correspondances. Si un prédicat résiduel est présent (identifié par RESIDUAL :() dans la Argument colonne, ce prédicat doit également être satisfait pour que les lignes soient considérées comme une correspondance. Le comportement dépend de l’opération logique en cours d’exécution :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 résultats de correspondances (ou de non-correspondances) sont déterminés 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). Lorsque la table de hachage est générée, analysez la table et affichez toutes les entrées. Pour l’opérateur union, utilisez la première entrée pour générer la table de hachage (suppression de doublons). Utilisez la deuxième entrée (qui ne doit pas avoir de doublons) pour analyser la table de hachage, renvoyer toutes les lignes qui n’ont aucune correspondance, puis analyser la table de hachage et retourner toutes les entrées. Hash Match est un opérateur physique. |
|
If |
L’opérateur If effectue le traitement conditionnel en fonction d’une expression.
If est un élément de langage. |
| Aucun | Inner Join |
L’opérateur Inner Join logique retourne chaque ligne qui satisfait la jointure de la première entrée (en haut) avec la deuxième entrée (inférieure). |
|
Insert |
L’opérateur Insert logique insère chaque ligne de son entrée dans l’objet spécifié dans la Argument colonne. L’opérateur physique est soit l’opérateur Table Insert, soit Index Insert, soit l’opérateur Clustered Index Insert. |
|
Analyse insérée | L’opérateur Inserted Scan analyse la table insérée . Scan inséré est un opérateur logique et physique. |
|
Intrinsic |
L’opérateur Intrinsic appelle une fonction Transact-SQL interne.
Intrinsic est un élément de langage. |
|
Iterator |
L’icône Iterator 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. Il existe trois icônes catchall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les constructions de langage Transact-SQL). |
Icône Icône |
Key Lookup |
L'opérateur Key Lookup est une recherche de marque-pages sur une table avec un index clusterisé. La Argument colonne 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é d’un opérateur Nested Loops. Si la clause WITH PREFETCH apparaît dans la Argument colonne, 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 Key Lookup opérateur dans un plan de requête indique que la requête peut tirer parti du réglage des performances. Par exemple, les performances des requêtes peuvent être améliorées en ajoutant un index de couverture. |
|
Keyset |
L’opérateur Keyset utilise un curseur qui peut voir les mises à jour, mais pas les insertions effectuées par d’autres utilisateurs. |
|
Language Element |
L’icône Language Element 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. Il existe trois icônes catchall : bleu (pour les itérateurs), orange (pour les curseurs) et vert (pour les constructions de langage Transact-SQL). |
|
Spool paresseux | L’opérateur logique lazy Spool stocke chaque ligne de son entrée dans un objet temporaire masqué stocké dans la tempdb base de données. Si l'opérateur est rembobiné (par exemple, par un opérateur Nested Loops) mais qu'aucune nouvelle liaison n'est nécessaire, les données mises en mémoire tampon sont utilisées au lieu de réanalyser l'entrée. Si la liaison est nécessaire, les données spooled sont ignorées et l’objet spool est reconstruit en réanalysant l’entrée (rebond). L’opérateur lazy Spool génère son fichier de spool de manière « différée », autrement dit, chaque fois que l’opérateur parent du spool demande une ligne, l’opérateur spool obtient une ligne de son opérateur d’entrée et le stocke dans le spool, plutôt que de consommer toutes les lignes à la fois. Lazy Spool est un opérateur logique. |
| Aucun | Left Anti Semi Join |
L’opérateur Left Anti Semi Join retourne chaque ligne de la première entrée (en haut) lorsqu’il n’existe aucune ligne correspondante dans la deuxième entrée (inférieure). Si aucun prédicat de jointure n’existe dans la Argument colonne, 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 à la 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’avaient aucune ligne correspondante dans la deuxième entrée. Les lignes qui ne correspondent pas dans la deuxième entrée sont retournées sous forme de valeurs Null. Si aucun prédicat de jointure n’existe dans la Argument colonne, chaque ligne est une ligne correspondante.
Left Outer Join est un opérateur logique. |
| Aucun | Left Semi Join |
L’opérateur Left Semi Join 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 la Argument colonne, chaque ligne est une ligne correspondante.
Left Semi Join est un opérateur logique. |
Icône |
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 (potentiellement chevauchants) pour produire des intervalles minimaux et non chevauchants qui sont ensuite utilisés pour rechercher des entrées d'index. Cet opérateur apparaît généralement au-dessus d’un ou de plusieurs opérateurs Compute Scalar sur des opérateurs Constant Scan, qui forment les intervalles (représentés comme des colonnes dans une rangée) que cet opérateur fusionne.
Merge Interval est un opérateur logique et physique. |
Icône |
Fusionner la jonction | L'opérateur Merge Join effectue les opérations logiques de jointure interne, de jointure externe gauche, de jointure semi-gauche, de jointure anti-gauche, de jointure externe droite, de jointure semi-droite, de jointure anti-droite et d'union. Dans la Argument colonne, l’opérateur Merge Join contient un prédicat MERGE :() si l’opération effectue une jointure un-à-plusieurs, ou un prédicat MANY-TO-MANY MERGE :() si l’opération effectue une jointure plusieurs-à-plusieurs. La Argument colonne 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 sur leurs colonnes respectives, éventuellement en insérant des 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 obligatoire, 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. |
|
Nested Loops |
L’opérateur Nested Loops effectue les opérations logiques de jointure interne, de jointure externe gauche, de jointure semi-gauche et d’anti-jointure gauche. Les jointures de boucles imbriquées effectuent, généralement à l’aide d’un index, une recherche sur la table interne pour chaque ligne de la table externe. Le processeur de requêtes décide, selon les coûts prévus, de trier l’entrée externe afin d’améliorer la localité des recherches sur l’index sur l’entrée interne. Toutes les lignes qui répondent au prédicat (facultatif) dans la Argument colonne sont retournées en fonction de l’opération logique en cours d’exécution.
Nested Loops est un opérateur physique. |
Icône de l’opérateur de suppression de l’index non cluster |
Nonclustered Index Delete |
L’opérateur Nonclustered Index Delete supprime les lignes d’entrée de l’index non-clusterisé spécifié dans la colonne Argument.
Nonclustered Index Delete est un opérateur physique. |
Icône |
Index Insert |
L’opérateur Index Insert insère des lignes de son entrée dans l’index non-clustered spécifié dans la colonne Argument. La Argument colonne contient également un prédicat SET :(), 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 la Argument colonne. Si un prédicat WHERE :() facultatif apparaît dans la Argument colonne, seules les lignes qui répondent au prédicat sont retournées.
Index Scan est un opérateur logique et physique. |
Icône |
Index Seek |
L’opérateur Index Seek utilise la capacité de recherche d’index pour récupérer des lignes à partir d’un index non cluster. La Argument colonne contient le nom de l’index non cluster utilisé. Il contient également le prédicat SEEK :(). Le moteur de stockage utilise l’index pour traiter uniquement les lignes qui répondent au prédicat SEEK :(). Il peut éventuellement inclure un prédicat WHERE :(), que le moteur de stockage évalue par rapport à toutes les lignes qui répondent au prédicat SEEK :() (il n’utilise pas les index pour effectuer cette opération). Si la colonne contient la clause ORDERED Argument, le processeur de requêtes a déterminé que les lignes doivent être retournées dans l'ordre dans lequel l'index non-clusterisé les a triées. Si la clause ORDER n’est pas présente, le moteur de stockage recherche l’index de la manière optimale (ce qui ne garantit pas que la sortie sera triée). Permettre à la sortie de conserver son ordre peut être moins performant que de produire une sortie non triée.
Index Seek est un opérateur logique et physique. |
| Icône de l’opérateur de pool d’index non clusterisé | Spool d’index | L’opérateur physique Index Spool contient un prédicat SEEK :() dans la Argument colonne. L’opérateur Index Spool analyse ses lignes d’entrée, plaçant une copie de chaque ligne dans un fichier de pool masqué (stocké dans la tempdb base de données et existant uniquement pour la durée de vie de la requête) et génère 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 SEEK :(). Si l'opérateur est rembobiné (par exemple, par un opérateur Nested Loops) mais qu'aucune nouvelle liaison n'est nécessaire, les données mises en mémoire tampon sont utilisées au lieu de réanalyser l'entrée. |
Icône |
Nonclustered Index Update |
L’opérateur Nonclustered Index Update physique met à jour les lignes de l'entrée dans l’index non-clusterisé spécifié dans la colonne Argument. Si un prédicat SET :() est présent, chaque colonne mise à jour est définie sur cette valeur.
Nonclustered Index Update est un opérateur physique. |
Icône |
Insertion d’index en ligne | L’opérateur physique Insérer un index en ligne indique qu’une opération de création, de modification ou de suppression d’index est effectuée en ligne. Autrement dit, les données de table sous-jacentes restent disponibles pour les utilisateurs pendant l’opération d’index. |
| Aucun | Parallelism |
L’opérateur Parallelism effectue les opérations logiques de distribution de flux, de collecte de flux et de répartition. Les Argument colonnes peuvent contenir un prédicat PARTITION COLUMNS:() avec une liste de colonnes partitionnées séparées par des virgules. Les Argument colonnes peuvent également contenir un prédicat ORDER BY :(), répertoriant les colonnes pour conserver l’ordre de tri pendant le partitionnement.
Parallelism est un opérateur physique.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 par SET STATISTICS XML ou à l’aide de l’option Include Actual Execution Plan dans SQL Server Management Studio ne contiendra pas l’élément RunTimeInformation pour l’opérateur Parallelism . Dans la sortie SET STATISTICS PROFILE, 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 a été utilisé uniquement pendant la Parallelism compilation de la requête et non dans le plan de requête au moment de l’exécution. Notez que 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. |
|
Parameter Table Scan |
L’opérateur Parameter Table Scan analyse une table qui agit en tant que paramètre dans la requête actuelle. En règle générale, cela est utilisé pour les requêtes INSERT au sein d’une procédure stockée.
Parameter Table Scan est un opérateur logique et physique. |
| Aucun | Agrégat partiel |
L’agrégation partielle est utilisée dans les plans parallèles. Il applique une fonction d’agrégation à autant de lignes d’entrée que possible afin que l’écriture sur disque (appelée « déversement ») n’est pas nécessaire.
Hash Match est le seul opérateur physique (itérateur) qui implémente l’agrégation de partitions.
L’agrégat partiel est un opérateur logique. |
Icône |
Population Query |
L’opérateur Population Query remplit la table de travail d’un curseur lorsque le curseur est ouvert. |
|
Refresh Query |
L’opérateur Refresh Query extrait les données actuelles des lignes dans la mémoire 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. |
|
Scan d'index à distance | L’opérateur Remote Index Scan analyse l’index distant spécifié dans la colonne Argument. Remote Index Scan est un opérateur logique et physique. |
|
Recherche d’index à distance | L’opérateur Remote Index Seek utilise la capacité de recherche d’un objet d’index distant pour récupérer des lignes. La Argument colonne contient le nom de l’index distant utilisé et le prédicat SEEK :().
Remote Index Seek est un opérateur physique logique. |
|
Insertion à distance | L’opérateur Remote Insert insère les lignes d’entrée dans un objet distant. Remote Insert est un opérateur logique et physique. |
|
Remote Query |
L’opérateur Remote Query envoie une requête à une source distante. Le texte de la requête envoyée au serveur distant apparaît dans la Argument colonne.
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 la Argument colonne.
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. |
Icône d’opérateur de parallélisme de flux de répartition |
Flux de repartition | L’opérateur Repartition Streams 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 du flux de sortie est réduit. Chaque enregistrement d’un flux d’entrée est placé dans un flux de sortie. Si cet opérateur conserve l’ordre, tous les flux d’entrée doivent être ordonnés et fusionnés dans plusieurs flux de sortie ordonnés. Si la sortie est partitionnée, la Argument colonne contient un prédicat PARTITION COLUMNS :() et les colonnes de partitionnement. Si la sortie est ordonnée, la Argument colonne contient un prédicat ORDER BY :() et les colonnes ordonnées.
Repartition Streams est un opérateur logique. L’opérateur est utilisé uniquement dans les plans de requête parallèles. |
|
Result |
L’opérateur Result fournit 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 Showplan.
Result est un élément de langage. |
|
RID Lookup |
RID Lookup est une recherche de signets sur un tas à l’aide d’un identificateur de ligne fourni (RID). La Argument colonne 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.
RID Lookup est toujours accompagné d’un NESTED LOOP JOIN.
RID Lookup est un opérateur physique. Pour plus d’informations sur les recherches de signets, consultez « Recherche de signets » sur le blog MSDN SQL Server. |
| Aucun | Right Anti Semi Join |
L’opérateur Right Anti Semi Join génère chaque ligne de la deuxième entrée (en bas) lorsqu’une ligne correspondante dans la première entrée (supérieure) n’existe pas. Une ligne correspondante est définie comme une ligne qui satisfait le prédicat dans la Argument colonne (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 qui satisfait la jointure de la deuxième entrée (inférieure) avec chaque ligne correspondante de la première entrée (supérieure). Elle retourne également toutes les lignes de la deuxième entrée qui n’avaient aucune ligne correspondante dans la première entrée, jointes à NULL. Si aucun prédicat de jointure n’existe dans la Argument colonne, chaque ligne est une ligne correspondante.
Right Outer Join est un opérateur logique. |
| Aucun | Right Semi Join |
L’opérateur Right Semi Join retourne chaque ligne de la deuxième entrée (en bas) lorsqu’il existe une ligne correspondante dans la première entrée (supérieure). Si aucun prédicat de jointure n’existe dans la Argument colonne, chaque ligne est une ligne correspondante.
Right Semi Join est un opérateur logique. |
Icône de l'opérateur de tampon de comptage de lignes |
Spool de comptage des lignes | L’opérateur Spool Nombre de lignes analyse l’entrée, en comptant le nombre de lignes présentes et en retournant le même nombre de lignes sans aucune donnée dans ces lignes. Cet opérateur est utilisé lorsqu’il est important de vérifier l’existence de lignes, plutôt que les données contenues dans les lignes. Par exemple, si un Nested Loops opérateur effectue une opération de jointure semi-gauche et que le prédicat de jointure s’applique à l’entrée interne, un compteur de ligne est susceptible d'être placé en haut de l’entrée interne de l’opérateur Nested Loops.
Nested Loops L’opérateur 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. |
|
Segment | Segment est un opérateur physique et logique. Il divise l'ensemble de données d'entrée en segments en fonction de la valeur d'une ou plusieurs colonnes. Ces colonnes sont affichées en tant qu’arguments dans l’opérateur Segment . L’opérateur génère ensuite un segment à la fois. |
| Aucun | Segment Repartition |
Dans un plan de requête parallèle, il existe parfois des régions conceptuelles d’itérateurs. Tous les itérateurs au sein d’une telle région peuvent être exécutés par des threads parallèles. Les régions elles-mêmes doivent être exécutées en série.
Parallelism Certains itérateurs au sein d’une région individuelle sont appelés Branch Repartition. L’itérateur Parallelism à la limite de deux régions de ce type est appelé Segment Repartition.
Branch Repartition et Segment Repartition sont des opérateurs logiques. |
|
Sequence |
L’opérateur Sequence pilote des plans de mise à jour étendus. Fonctionnellement, il exécute chaque entrée dans la séquence (en haut en bas). Chaque entrée est généralement une mise à jour d’un objet différent. Elle retourne uniquement les lignes qui proviennent de sa dernière entrée (inférieure).
Sequence est un opérateur logique et physique. |
|
Sequence Project |
L’opérateur Sequence Project ajoute des colonnes pour effectuer des calculs sur un ensemble ordonné. Il divise l'ensemble de données 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 sont affichées en tant qu’arguments dans l’opérateur Sequence Project .
Sequence Project est un opérateur logique et physique. |
|
Instantané | 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. La Argument colonne contient un prédicat DISTINCT ORDER BY :() si les doublons sont supprimés par cette opération, ou un prédicat ORDER BY :() 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. |
|
Split |
L’opérateur Split est utilisé pour optimiser le traitement des mises à jour. Il fractionne chaque opération de mise à jour en une opération de suppression et d’insertion.
Split est un opérateur logique et physique. |
|
Bobine | L’opérateur Spool enregistre un résultat de requête intermédiaire dans la tempdb base de données. |
|
Stream Aggregate |
L’opérateur Stream Aggregate regroupe les lignes d’une ou plusieurs colonnes, puis 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ée au client, ou à la fois. L’opérateur Stream Aggregate nécessite une entrée triée par les colonnes au sein de ses groupes. L’optimiseur utilise un Sort opérateur avant cet opérateur si les données ne sont pas déjà triées en raison d’un opérateur antérieur Sort ou en raison d’une recherche ou d’une analyse d’index ordonnés. Dans l’instruction SHOWPLAN_ALL ou le plan d’exécution graphique dans SQL Server Management Studio, les colonnes du prédicat GROUP BY sont répertoriées dans la Argument colonne et les expressions d’agrégation sont répertoriées dans la colonne Valeurs définies .
Stream Aggregate est un opérateur physique. |
|
Interrupteur | Le commutateur est un type spécial d’itérateur de concaténation qui a n entrées. Une expression est associée à chaque opérateur Switch . Selon la valeur de retour de l’expression (comprise 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 avant rapides avec certains opérateurs tels que l’opérateur TOP . Le commutateur est à la fois un opérateur logique et physique. |
|
Table Delete |
L’opérateur Table Delete physique supprime les lignes de la table spécifiée dans la Argument colonne du plan d’exécution de requête. |
|
Table Insert |
L’opérateur Table Insert insère des lignes de son entrée dans la table spécifiée dans la Argument colonne du plan d’exécution de requête. La Argument colonne contient également un prédicat SET :(), qui indique la valeur à laquelle chaque colonne est définie. Si Table Insert n’a pas d’enfant pour les valeurs d’insertion, la ligne insérée provient de l’opérateur Insert lui-même.
Table Insert est un opérateur physique. |
|
Fusion de tables | 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 la Argument colonne de l’opérateur. L’opération réelle effectuée dépend de la valeur d’exécution de la colonne ACTION spécifiée dans la Argument colonne de l’opérateur.
Table Merge est un opérateur physique. |
|
Table Scan |
L’opérateur Table Scan récupère toutes les lignes de la table spécifiée dans la Argument colonne du plan d’exécution de requête. Si un prédicat WHERE :() apparaît dans la Argument colonne, 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 de spoul masquée stockée dans la base de données tempdb et existante uniquement pour la durée de vie de la requête. Si l'opérateur est rembobiné (par exemple, par un opérateur Nested Loops) mais qu'aucune nouvelle liaison n'est nécessaire, les données mises en mémoire tampon sont utilisées au lieu de réanalyser l'entrée.
Table Spool est un opérateur physique. |
|
Table Update |
L’opérateur Table Update physique met à jour les lignes d’entrée dans la table spécifiée dans la Argument colonne du plan d’exécution de requête. Le prédicat SET :() détermine la valeur de chaque colonne mise à jour. Ces valeurs peuvent être référencées dans la clause SET ou ailleurs dans cet opérateur, ainsi qu’ailleurs dans cette requête. |
|
Fonction table | 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 retournant une table renvoie les lignes provenant de tempdb.Les requêtes avec appels aux fonctions table génèrent des plans de requête avec l’itérateur de fonction table . Fonction avec valeur de table peut être évaluée avec différentes valeurs de paramètre : La fonction de lecture XML de type table prend un objet BLOB XML en tant que paramètre et produit un résultat de lignes représentant des nœuds XML dans l’ordre de document XML. D’autres paramètres d’entrée peuvent restreindre les nœuds XML retournés à un sous-ensemble de document XML. Le lecteur de fonction à valeur de table XML avec filtre XPath est un type spécial de fonction table-valuée de lecteur XML qui limite la sortie aux nœuds XML satisfaisant une expression XPath. La fonction à valeur de table est un opérateur logique et physique. |
|
haut | L’opérateur Top analyse l’entrée, retournant uniquement le premier nombre spécifié ou le pourcentage de lignes, éventuellement en fonction d’un ordre de tri. La Argument colonne peut contenir une liste des colonnes qui sont vérifiées pour les liens. Dans les plans de mise à jour, l’opérateur Top est utilisé pour appliquer des limites de nombre de lignes.
Top est un opérateur logique et physique.
Top est un opérateur logique et physique. |
| Aucun | Tri des N premiers |
Le tri N supérieur est similaire à l’itérateur Sort , sauf que seules les premières lignes N sont nécessaires, et non l’ensemble du jeu 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. Tous les opérateurs UDX sont à la fois des opérateurs logiques et physiques. 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 seule ligne de sortie. Il s’agit d’un opérateur d’agrégation XML sensible à l’ordre.L’opérateur étendu (UDX) XML SERIALIZER est un opérateur d’agrégation XML sensible à l’ordre. Il entre des lignes représentant des nœuds XML ou des scalaires XQuery dans l’ordre des documents XML et produit un objet BLOB XML sérialisé dans une seule colonne XML dans une ligne de sortie unique.L’opérateur étendu (UDX) XML FRAGMENT SERIALIZER est un type spécial de XML SERIALIZER utilisé pour traiter les lignes d’entrée qui représentent des fragments XML devant être 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 génère une ligne avec des colonnes représentant la 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 la scalaire XQuery qui contient le résultat de fn :data().L’opérateur XQUERY CONTAINS étendu é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 la scalaire XQuery qui contient le résultat de fn :contains().L'opérateur UPDATE XML NODE en version étendue met à jour le nœud XML dans l'extension XQuery de modification de données dans la méthode modify(), appliqué au type XML. |
| Aucun | Union | L’opérateur Union analyse plusieurs entrées, en démettant 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 la Argument colonne 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. |
|
While |
L’opérateur While implémente la boucle Transact-SQL while.
While est un élément de langage |
|
Window Spool |
L’opérateur Window Spool développe chaque ligne dans l’ensemble de lignes qui représente la fenêtre associée. Dans une requête, la clause OVER 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. |
Icône Icône
Icône d’index clusterisé Icône
Icône Icône
Icône
Icône
Icône
Icône de l’opérateur de suppression de l’index non cluster
Icône
Icône
Icône
Icône
Icône
Icône d’opérateur de parallélisme de flux de répartition
Icône de l'opérateur de tampon de comptage de lignes
-