Compartir a través de


Referencia de operadores lógicos y físicos del plan de presentación

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Los operadores describen cómo SQL Server ejecuta una consulta o una instrucción de lenguaje de manipulación de datos (DML). El optimizador de consultas usa operadores para generar un plan de consulta con el fin de crear el resultado especificado en la consulta o para realizar la operación especificada en la instrucción DML. El plan de consulta es un árbol que consta de operadores físicos. Puede ver el plan de consulta mediante las instrucciones SET SHOWPLAN, las opciones gráficas del plan de ejecución de SQL Server Management Studio o los eventos de plan de presentación de eventos extendidos.

Los operadores se clasifican como lógicos y físicos.

Operadores lógicos

Los operadores lógicos describen la operación algebraica relacional usada para procesar una instrucción. En otras palabras, los operadores lógicos describen conceptualmente la operación que se debe realizar.

Operadores físicos

Los operadores físicos implementan la operación descrita por los operadores lógicos. Cada operador físico es un objeto o rutina que realiza una operación. Por ejemplo, algunos operadores físicos obtienen acceso a columnas o filas desde una tabla, índice o vista. Otros operadores físicos realizan operaciones como cálculos, agregaciones, comprobaciones de integridad de datos o combinaciones. Los operadores físicos tienen costos asociados.

Los operadores físicos se inicializan, recopilan datos y se cierran. Específicamente, el operador físico puede responder a las llamadas de los tres métodos siguientes:

  • Open(): el método Open() hace que un operador físico se inicialice y configure las estructuras de datos necesarias. Aunque el operador físico puede recibir muchas llamadas Open(), normalmente recibe solo una.

  • GetRow(): el método GetRow() hace que un operador físico obtenga la primera fila de datos o la siguiente. El operador físico puede recibir ninguna o numerosas llamadas GetRow().

  • Close(): el método Close() hace que un operador físico realice algunas operaciones de limpieza y se cierre. Un operador físico solo recibe una llamada Close(), pero no siempre se garantiza una llamada Close().

El método GetRow() devuelve una fila de datos, mientras que el número de veces que se llama aparece como ActualRows en los resultados del plan de presentación generados mediante el plan de presentación gráfico y XML. Para obtener más información sobre estas opciones de SET, consulte SET STATISTICS PROFILE (Transact-SQL) y SET STATISTICS XML (Transact-SQL).

Los recuentos ActualRebinds y ActualRewinds que aparecen en los resultados del plan de presentación hacen referencia al número de veces que se llama al método Open(). A menos que haya un operador en la parte interna de una combinación de bucles anidados, ActualRebinds es igual a uno y ActualRewinds es igual a cero. Si hay un operador en la parte interna de una combinación de bucles, la suma del número de reenlaces y rebobinados es igual al número de filas procesadas en la parte externa de la combinación. Un reenlace significa que uno o más de los parámetros correlativos de la combinación han cambiado y es necesario volver a evaluar la parte interna. Un rebobinado significa que ninguno de los parámetros correlativos ha cambiado y aún se puede volver a utilizar el conjunto de resultados interno anterior.

ActualRebinds y ActualRewinds están presentes en la salida del plan de presentación XML generada mediante SET STATISTICS XML ON y el plan de presentación gráfico. Solo se rellenan para los operadores Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spooly Table-valued Function. ActualRebinds y ActualRewinds también se pueden rellenar para los operadores Assert y Filter cuando el atributo StartupExpression está establecido en TRUE.

Cuando ActualRebinds y ActualRewinds aparecen en un plan de presentación XML, son comparables a EstimateRebinds y EstimateRewinds. Si no aparecen, el número estimado de filas (EstimateRows) es comparable al número real de filas (ActualRows). Si no aparecen, los resultados reales del plan de presentación gráfico muestran ceros para los reenlaces y rebobinados reales.

Existe un contador relacionado, ActualEndOfScans, disponible en el plan de presentación XML y gráfico. Siempre que un operador físico alcanza el final de su flujo de datos, este contador se incrementa en uno. Un operador físico puede alcanzar el final de su flujo de datos cero, una o varias veces. Al igual que los reenlaces y rebobinados, el recuento de finales de recorrido puede ser superior a uno únicamente si el operador se encuentra en la parte interna de una combinación de bucles. El recuento de finales de recorrido debería ser inferior o igual a la suma del número de reenlaces y rebobinados.

Asignar operadores lógicos y físicos

El optimizador de consultas crea un plan de consulta con forma de árbol que consta de operadores lógicos. Una vez que el optimizador de consultas ha creado el plan, elige el operador físico más eficaz para cada operador lógico. El optimizador de consultas utiliza un método basado en el coste para determinar qué operador físico implementa un operador lógico.

Normalmente, varios operadores físicos pueden implementar una operación lógica. Sin embargo, en pocas ocasiones un operador físico puede implementar varias operaciones lógicas también.

Ejecución del modo por lotes

La ejecución del modo por lotes es un método de procesamiento de consultas en el que las consultas procesan varias filas a la vez (de ahí el término por lotes) en lugar de una fila cada vez. En el procesamiento del modo por lotes se usan algoritmos que se optimizan para las CPU de varios núcleos y el mayor rendimiento de memoria que se encuentran en el hardware moderno. El modo por lotes se puede usar mediante un conjunto de operadores para objetos de almacén de filas y almacén de columnas. Para obtener más información, consulte Guía de arquitectura de procesamiento de consulta.

Descripciones de operadores

Esta sección contiene las descripciones de los operadores lógicos y físicos. Puede ver las propiedades de los planes de consulta y los operadores mediante el panel Propiedades de la vista Plan de consulta de SQL Server Management Studio (SSMS) y Azure Data Studio.

Sugerencia

Siempre que un icono del plan de ejecución gráfico determinado tenga un círculo amarillo con dos flechas de derecha a izquierda, significa que el operador se ejecuta en paralelo. Para obtener más información sobre el paralelismo, vea la Guía de arquitectura de subprocesos y tareas.

Iconos Operador de plan de presentación Descripción
Combinación adaptable El operador Combinación adaptable permite retrasar un método de combinación hash o de combinación de bucles anidados hasta después de que se haya examinado la primera entrada.

Adaptive Join es un operador físico. Para obtener más información, vea Descripción de las combinaciones adaptables.
Agregada El operador Aggregate calcula una expresión que contiene MIN, MAX, SUM, COUNT o AVG.

Aggregate es un operador lógico y físico.
Arithmetic Expression El operador Arithmetic Expression calcula un nuevo valor a partir de los valores de una fila. La expresión aritmética no se usa en versiones más recientes de SQL Server.
Assert El operador Assert comprueba una condición. Por ejemplo, valida la integridad referencial o se asegura de que una subconsulta escalar devuelve una fila. Por cada fila de entrada, el operador Assert evalúa la expresión del panel Propiedades del plan de ejecución. Si la expresión da como resultado NULL, la fila se pasa a través del operador Assert y continúa la ejecución de la consulta. Si la expresión da como resultado un valor distinto a NULL, se genera el error apropiado.

Assert es un operador físico.
Asignar El operador Assign asigna el valor de una expresión o una constante a una variable.

Assign es un elemento del lenguaje.
Ninguno Async Concat El operador Async Concat solo se usa en consultas remotas (consultas distribuidas). Tiene n nodos secundarios y un nodo primario. Algunos de los nodos secundarios suelen ser equipos remotos que participan en una consulta distribuida. Async Concat emite llamadas Open() a todos los nodos secundarios a la vez y, después, asigna un mapa de bits a cada uno de estos nodos. Por cada bit que sea un 1, Async Concat envía las filas de salida a petición al nodo primario.
Bitmap SQL Server usa el operador Bitmap para implementar filtros de mapas de bits en planes de consulta paralelos. Los filtros de mapas de bits agilizan la ejecución de la consulta al eliminar las filas con valores de clave que no pueden generar ningún registro de combinación antes de pasar las filas a través de otro operador, por ejemplo, el operador Parallelism. Un filtro de mapas de bits usa una representación compacta de un conjunto de valores de una tabla en una parte del árbol de operadores para filtrar filas de una segunda tabla en otra parte del árbol. Si se quitan las filas innecesarias de la consulta en una fase temprana, los operadores subsiguientes tienen menos filas con las que trabajar y el rendimiento global de la consulta mejora. El optimizador determina cuando un mapa de bits es suficientemente selectivo para resultar útil y en qué operadores se aplica el filtro.

Bitmap es un operador físico.
Bitmap Create El operador Bitmap Create aparece en el resultado del plan de presentación donde se generan los mapas de bits.

Bitmap Create es un operador lógico.
Ninguno Branch Repartition En un plan de consulta paralelo, a veces hay regiones conceptuales de iteradores. Todos los iteradores de una región así se pueden ejecutar mediante subprocesos paralelos. Las regiones en sí deben ejecutarse en serie. Algunos de los iteradores Parallelism de una región individual se denominan Branch Repartition. El iterador Parallelism situado en el límite de dos de estas regiones se denomina Segment Repartition.

Branch Repartition y Segment Repartition son operadores lógicos.
Broadcast Broadcast tiene un nodo secundario y n nodos primarios. Broadcast envía las filas de entrada a varios consumidores a petición. Cada consumidor recibe todas las filas. Por ejemplo, si todos los consumidores son lados de creación de una combinación hash, se crean n copias de las tablas hash.
Build Hash Indica la compilación de una tabla hash del lote para un índice de almacén de columnas optimizado para memoria.

Se aplica a: SQL Server 2012 (11.x) solamente.
Clustered Index Delete El operador Clustered Index Delete elimina las filas del índice agrupado especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. Si está presente SeekPredicate o Predicate, solo se eliminan las filas que satisfacen el predicado.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Clustered Index Delete es un operador físico.
Clustered Index Insert El operador Clustered Index Insert inserta filas de su entrada en el índice clúster especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. El plan de presentación XML incluye las propiedades SetPredicate y ColumnReference, que se pueden usar para determinar el valor en el que se establece cada columna. Si Clustered Index Insert no tiene elementos secundarios para los valores de inserción, se obtiene la fila insertada del propio operador Insert.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Clustered Index Insert es un operador físico.
Clustered Index Merge El operador Clustered Index Merge aplica un flujo de datos de mezcla a un índice clúster. El operador elimina, actualiza o inserta filas del índice clúster especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. La operación real realizada depende del valor en runtime de la propiedad ActionColumn.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Clustered Index Merge es un operador físico.
Clustered Index Scan El operador Clustered Index Scan examina el índice clúster especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. Si hay un Predicate opcional, solo se devuelven las filas que lo cumplen. Si la propiedad Ordered en el panel Propiedades o el plan de presentación XML tiene el valor True, el procesador de consultas ha determinado que las filas deben devolverse en el orden en que el índice clúster los haya ordenado. Si la propiedad Ordered tiene el valor False, el motor de base de datos examina el índice de forma óptima sin ordenar el resultado necesariamente.

Clustered Index Scan es un operador lógico y físico.
Clustered Index Seek El operador Clustered Index Seek usa la capacidad de búsqueda de los índices para recuperar filas de un índice clúster. La propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML, contiene el nombre del índice clúster que se está usando. SeekPredicate contiene el predicado de la búsqueda. El motor de base de datos utiliza el índice para procesar solamente las filas que cumplen el SeekPredicate. También puede incluir una propiedad Predicate en la que el motor de base de datos determina todas las filas que cumplen el SeekPredicate, aunque es opcional y no utiliza índices para completar el proceso.

Si la propiedad Ordered en el panel Propiedades o el plan de presentación XML tiene el valor True, el procesador de consultas ha determinado que las filas deben devolverse en el orden en que el índice clúster los haya ordenado. Si la propiedad Ordered tiene el valor False, el motor de base de datos examina el índice de forma óptima sin ordenar el resultado necesariamente. Requerir que el resultado conserve su ordenación puede ser menos eficiente que generar un resultado no ordenado.

Clustered Index Seek es un operador lógico y físico.
Clustered Index Update El operador Clustered Index Update actualiza las filas de entrada en el índice clúster especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. Si la propiedad Predicate está presente, solo se actualizan las filas que cumplen este predicado. Si la propiedad SetPredicate está presente, se asigna este valor a todas las columnas actualizadas. Si la propiedad DefineValue está presente, se muestran los valores que define este operador. Se puede hacer referencia a estos valores en la cláusula SET o en cualquier parte del operador, y en cualquier parte de esta consulta.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Clustered Index Update es un operador lógico y físico.
Contraer El operador Collapse optimiza el proceso de actualización. Cuando se realiza una actualización, esta se puede dividir (con el operador Split ) en una eliminación y una inserción. El panel Propiedades contiene un predicado group by que especifica una lista de columnas de clave. Si el procesador de consultas encuentra filas adyacentes que eliminan e insertan los mismos valores clave, reemplazará estas operaciones independientes por una única operación de actualización más eficaz.

Collapse es un operador lógico y físico.
Columnstore Index Delete El operador Columnstore Index Delete representa la eliminación de filas del índice de almacén de columnas especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. La eliminación se produce a través de Clustered Index Delete para un índice de almacén de columnas clúster y mediante el operador Index Delete para un índice de almacén de columnas no clúster. El tipo de índice (Clustered, NonClustered o ViewNonClustered) se especifica en la propiedad IndexKind del plan de presentación XML. SeekPredicate no se admite en Columnstore Index Delete. Las filas que se van a eliminar se leen de un operador secundario.

Columnstore Index Delete es un operador físico.
Columnstore Index Insert El operador Columnstore Index Insert representa la inserción de filas desde su entrada en el índice de almacén de columnas especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. La inserción se produce a través de Clustered Index Insert para un índice de almacén de columnas clúster y mediante el operador Index Insert para un índice de almacén de columnas no clúster. El tipo de índice (Clustered, NonClustered o ViewNonClustered) se especifica en la propiedad IndexKind del plan de presentación XML. El plan de presentación XML incluye las propiedades SetPredicate y ColumnReference, que se pueden usar para determinar el valor en el que se establece cada columna.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Columnstore Index Insert es un operador físico.
Columnstore Index Merge Columnstore Index Merge representa la aplicación de un flujo de datos de combinación mediante el operador Clustered Index Merge. El operador elimina, actualiza o inserta filas del índice de almacén de columnas agrupado especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. La operación real realizada depende del valor en runtime de la propiedad ActionColumn.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Columnstore Index Merge es un operador físico.
Exploración de índice de almacén de columnas El operador Columnstore Index Scan representa un examen del índice de almacén de columnas especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. El examen se produce a través de Clustered Index Scan para un índice de almacén de columnas clúster y mediante el operador Index Scan para un índice de almacén de columnas no clúster. El tipo de índice (Clustered, NonClustered o ViewNonClustered) se especifica en la propiedad IndexKind del plan de presentación XML. Si hay un Predicate opcional, solo se devuelven las filas que lo cumplen. La propiedad SeekPredicate solo está disponible para un índice de almacén de columnas con particiones y solo para condiciones de igualdad o desigualdad. Si la columna de partición está en el predicado de consulta, usar la eliminación de particiones puede reducir el número de grupos de filas que se van a analizar.

Columnstore Index Scan es un operador físico.
Columnstore Index Update El operador Columnstore Index Update representa una actualización de una o varias filas del índice de almacén de columnas especificado en la propiedad Object, que se muestra en el panel Propiedades de los planes de presentación gráficos y XML. Las actualizaciones se producen a través del operador Clustered Index Update para un índice de almacén de columnas clúster y a través del operador Index Update para un índice de almacén de columnas no clúster. El tipo de índice (Clustered, NonClustered o ViewNonClustered) se especifica en la propiedad IndexKind del plan de presentación XML. SeekPredicate no se admite en Columnstore Index Update. Las filas que se van a actualizar se leen desde un operador secundario. Si la propiedad SetPredicate está presente, se asigna este valor a todas las columnas actualizadas. Si la propiedad DefineValue está presente, se muestran los valores que define este operador. Se puede hacer referencia a estos valores en la cláusula SET o en cualquier parte del operador, y en cualquier parte de esta consulta.

Nota: Los cambios en los índices clúster pueden afectar a los índices no clúster.

Columnstore Index Update es un operador físico.
Compute Scalar El operador Compute Scalar evalúa una expresión para generar un valor escalar calculado. Se puede devolver al usuario, hacer referencia a él en cualquier otra parte de la consulta, o ambas cosas a la vez. en un predicado de filtro o de combinación.

Es posible que los operadoresCompute Scalar que aparecen en planes de presentación generados por SET STATISTICS XML no contengan el elemento RunTimeInformation. En planes de presentación gráficos, es posible que las opciones Número de filas real, Reenlaces reales y Rebobinados reales no aparezcan en la ventana Propiedades cuando la opción Incluir plan de ejecución real está seleccionada en SQL Server Management Studio. Si esto ocurre, significa que, aunque estos operadores se han utilizado en el plan de consulta compilado, otros operadores han realizado su trabajo en el plan de consulta en tiempo de ejecución. Tenga en cuenta también que el número de ejecuciones en el resultado del plan de presentación generado por SET STATISTICS PROFILE es equivalente a la suma de reenlaces y rebobinados de planes de presentación generados por SET STATISTICS XML.

Compute Scalar es un operador lógico y físico.
Concatenation El operador Concatenation explora varias entradas y devuelve cada fila explorada. Normalmente, Concatenation se utiliza para implementar la construcción UNION ALL de Transact-SQL. El operador físico Concatenation tiene dos o más entradas y una salida. Concatenation copia filas del primer flujo de entrada en el flujo de salida y, a continuación, repite esta operación con cada flujo de entrada adicional.

Concatenation es un operador lógico y físico.
Condicional (If y While) El operador Conditional lleva a cabo el procesamiento condicional basado en un bucle IF o WHILE. If y While son elementos de lenguaje.
Constant Scan El operador Constant Scan escribe una o varias filas de constantes en una consulta. El operador Compute Scalar se suele usar después de Constant Scan para agregar columnas a una fila generada por el operador Compute Scalar. Constant Scan puede generar una o varias filas con cero o más columnas.
Convertir El operador Convert convierte un tipo de datos escalar en otro.

Convert es un elemento del lenguaje.
Cross Join El operador Cross Join combina cada fila de la primera entrada (superior) con cada fila de la segunda entrada (inferior).

Cross Join es un operador lógico.
Cursor Los operadores lógicos y físicos Cursor se usan para describir cómo se ha ejecutado una consulta o una actualización que implican la ejecución de operaciones con cursores. Los operadores físicos describen el algoritmo físico de implementación utilizado para procesar el cursor, por ejemplo, con un cursor dinámico. Cada paso de la ejecución de un cursor implica un operador físico. Los operadores lógicos describen una propiedad del cursor, como, por ejemplo, si el cursor es de solo lectura.

Los operadores lógicos incluyen Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, Secondary y Synchronous.

Los operadores físicos incluyen Dynamic, Fetch Query, Keyset, Population Query, Refresh Query y Snapshot.
Declare El operador Declare asigna una variable local en el plan de consulta.

Declare es un elemento del lenguaje.
Eliminar El operador Delete elimina de un objeto las filas que satisfacen el predicado opcional del panel Propiedades.
Deleted Scan En desencadenadores, el operador Deleted Scan recorre la tabla eliminada.
Ninguno Distinct El operador Distinct quita los duplicados de un conjunto de filas o de una colección de valores.

Distinct es un operador lógico.
Ninguno Distinct Sort El operador lógico Distinct Sort examina la entrada, quita los duplicados y ordena por las columnas especificadas en el predicado distinct order by del panel Propiedades.

Distinct Sort es un operador lógico.
Distribute Streams El operador Distribute Streams solo se usa en los planes de consulta paralelos. El operador Distribute Streams utiliza una solo flujo de entrada de registros y genera varios flujos de salida. No se cambia el contenido de los registros ni su formato. Cada registro del flujo de entrada aparece en uno de los flujos de salida. Este operador conserva automáticamente el orden relativo de los registros de entrada en los flujos de salida. Normalmente, se utilizan algoritmos hash para decidir a qué flujo de salida pertenece un determinado registro de entrada.

Si la salida tiene particiones, el panel Propiedades contiene un predicado partition columns y las columnas de partición.

Distribute Streams es un operador lógico
Dinámica El operador Dynamic usa un cursor que puede ver todos los cambios que han realizado otros usuarios.
Eager Spool El operador Eager Spool usa la entrada completa y almacena cada fila en un objeto temporal oculto almacenado en la base de datos tempdb . Si se hace retroceder el operador (por ejemplo, con un operador Nested Loops ) pero no es necesario volver a enlazar, se usan los datos de la cola en lugar de volver a examinar la entrada. Si es necesario volver a enlazar, se descartan los datos y se vuelve a generar el objeto de la cola; para ello se vuelve a recorrer la entrada (se vuelve a enlazar). El operador Eager Spool crea su archivo de cola de forma "ansiosa": cuando el operador primario de la cola solicita la primera fila, el operador de cola consume todas las filas de su operador de entrada y las almacena en la cola.

Eager Spool es un operador lógico.
Fetch Query El operador Fetch Query recupera filas cuando se emite una captura en un cursor.
Filter El operador Filter examina la entrada y solo devuelve las filas que cumplen la expresión del filtro (predicado) que aparece en el panel Propiedades.
Ninguno Flow Distinct El operador Flow Distinct recorre la entrada y quita los duplicados. Mientras que el operador Distinct procesa todas las entradas antes de obtener resultados, el operador Flow Distinct devuelve cada fila a medida que se obtiene de la entrada (a menos que la fila esté duplicada, en cuyo caso se descarta).

Flow Distinct es un operador lógico.
Comprobación de referencias de claves externas El operador Foreign Key References Check realiza comprobaciones de integridad referencial locales, mediante la comparación de la fila modificada con las filas de las tablas de referencia para comprobar que la modificación no interrumpirá la integridad referencial. El operador Comprobación de referencias de claves externas se usa cuando existen más de 253 referencias de clave externa en la misma clave principal o única.

Comprobación de referencias de claves externas es un operador lógico y físico.
Full Outer Join El operador lógico Full Outer Join devuelve cada fila que cumple el predicado de combinación de la primera entrada (superior) combinada con cada fila de la segunda entrada (inferior). También devuelve filas de:

- La primera entrada que no tenga coincidencias en la segunda entrada.

- La segunda entrada que no tenga coincidencias en la primera entrada.

La entrada que no contiene valores coincidentes se devuelve como un valor nulo.

Full Outer Join es un operador lógico.
Gather Streams El operador Gather Streams solo se usa en planes de consulta paralelos. El operador Gather Streams procesa varios flujos de entrada y produce un único flujo de salida de registros combinando los flujos de entrada. No se cambia el contenido de los registros ni su formato. Si este operador conserva el orden, todos los flujos de entrada deben estar ordenados. Si se ordena la salida, el panel Propiedades contiene un predicado order by y los nombres de las columnas que se ordenan.

Gather Streams es un operador lógico.
Hash Match El operador Hash Match genera una tabla hash y calcula un valor hash para cada fila de su entrada de compilación. En el panel Propiedades aparece un predicado hash con una lista de las columnas usadas para crear un valor hash. A continuación, por cada fila de sondeo (como corresponda), calcula un valor hash (con la misma función hash) y busca las coincidencias en la tabla hash. Si hay un predicado residual (identificado mediante RESIDUAL:() en el panel Propiedades), ese predicado también debe cumplirse para que una fila se considere una coincidencia. El comportamiento depende de la operación lógica que se esté realizando:

- Para cualquier combinación, utilice la primera entrada (superior) para generar la tabla hash y la segunda entrada (inferior) para sondear la tabla hash. Obtendrá como resultado las coincidencias (o las no coincidencias) que indique el tipo de combinación. Si varias combinaciones utilizan la misma columna de combinación, estas operaciones se agrupan en un equipo hash.

- Para los operadores Distinct o Aggregate, utilice la entrada para generar la tabla hash (para ello, quite los duplicados y calcule las expresiones de agregado). Cuando se haya generado la tabla hash, recorra la tabla y presente todas las entradas.

- En el caso del operador Union, utilice la primera entrada para generar la tabla hash (para ello, quite los duplicados). Use la segunda entrada (que no debe tener duplicados) para sondear la tabla hash, devolver todas las filas que no tengan coincidencias y, a continuación, recorrer la tabla hash para devolver todas las entradas.

Hash Match es un operador físico. Para obtener más información, vea Descripción de las combinaciones hash.
Index Delete El operador Index Delete elimina las filas del índice no clúster especificado en el panel Propiedades.

Index Delete es un operador físico.
Index Insert El operador Index Insert inserta filas de su entrada en el índice no clúster especificado en el panel Propiedades. El panel Propiedades contiene también un predicado set, que indica el valor en el que se establece cada columna.

Index Insert es un operador físico.
Index Scan El operador Index Scan recupera todas las filas del índice no clúster especificadas en el panel Propiedades. Si aparece un predicado opcional where en la el panel Propiedades, solo se devuelven las filas que cumplen el predicado.

Index Scan es un operador lógico y físico.
Index Seek El operador Index Seek usa la capacidad de búsqueda de los índices para recuperar filas de un índice no clúster. El panel Propiedades contiene el nombre del índice no clúster utilizado. También contiene el predicado seek. El motor de base de datos utiliza el índice para procesar solamente las filas que cumplen el predicado seek. También se puede incluir un predicado where, predicado que evaluará el motor de base de datos respecto a todas las filas que cumplan el predicado seek (no se utilizan los índices para esta comprobación). Si el panel Propiedades contiene la cláusula ORDERED, significa que el procesador de consultas ha determinado que se deben devolver las filas en el orden en el que el índice no clúster las haya clasificado. Si no hay una cláusula ORDERED, el motor de base de datos busca el índice de la forma óptima (que no garantiza que el resultado se ordene). Permitir que el resultado mantenga su ordenación puede ser menos eficiente que generar un resultado no ordenado.

Index Seek es un operador lógico y físico.
Index Spool El operador Index Spool contiene un predicado seek en el panel Propiedades. El operador Index Spool examina sus filas de entrada, coloca una copia de cada fila en un archivo de cola oculto (almacenado en la base de datos tempdb y que solo existe mientras dure la consulta) y genera un índice no agrupado en las filas. Esto permite utilizar la capacidad de búsqueda de los índices para presentar solo las filas que cumplan el predicado seek. Si se hace retroceder el operador (por ejemplo, con un operador Nested Loops ) pero no es necesario volver a enlazar, se usan los datos de la cola en lugar de volver a examinar la entrada.

Index Spool es un operador físico.
Index Update El operador físico Index Update actualiza las filas de su entrada en el índice no clúster especificado en el panel Propiedades. Si hay un predicado set, se asigna este valor a todas las columnas actualizadas.

Index Update es un operador físico.
Inner Join El operador Inner Join devuelve todas las filas que cumplen el predicado de combinación de la primera entrada (superior) con la segunda entrada (inferior).

Inner Join es un operador lógico.
Insertar El operador Insert inserta cada fila de su entrada en el objeto especificado en el panel Propiedades. El operador físico es Table Insert, Index Inserto Clustered Index Insert

Insert es un operador lógico.
Inserted Scan En desencadenadores, el operador Inserted Scan examina la tabla insertada.

Inserted Scan es un operador lógico y físico.
Intrinsic El operador Intrinsic invoca una función Transact-SQL interna.

Intrinsic es un elemento del lenguaje.
Iterator El icono de selección (catchall) Iterator se muestra cuando la lógica que genera planes de presentación gráficos no puede encontrar un icono adecuado para el iterador. Este icono no indica necesariamente una condición de error.
Key Lookup El operador Key Lookup es una búsqueda de marcadores en un tabla con un índice clúster. El panel Propiedades contiene el nombre del índice clúster y la clave de agrupación en clústeres utilizada para buscar la fila en el índice clúster. Key Lookup está siempre acompañado por un operador Nested Loops . Si en el panel Propiedades aparece la cláusula WITH PREFETCH, el procesador de consultas habrá determinado que resulta óptimo usar una captura previa asincrónica (lectura anticipada) al buscar marcadores en el índice agrupado.

El uso de un operador Key Lookup en un plan de consulta indica que la consulta puede beneficiarse de la optimización del rendimiento. Por ejemplo, el rendimiento de las consultas se puede mejorar al agregar un índice de cobertura.
Keyset El operador Keyset usa un cursor que puede ver las actualizaciones, pero no las inserciones que realizan los demás.
Elemento Language El icono de selección (catchall) Language Element se muestra cuando la lógica que genera planes de presentación gráficos no puede encontrar un icono adecuado para el elemento de iteración. Este icono no indica necesariamente una condición de error.
Lazy Spool El operador lógico Lazy Spool almacena cada fila de su entrada en un objeto temporal oculto almacenado en la base de datos tempdb . Si se hace retroceder el operador (por ejemplo, con un operador Nested Loops ) pero no es necesario volver a enlazar, se usan los datos de la cola en lugar de volver a examinar la entrada. Si es necesario volver a enlazar, se descartan los datos y se vuelve a generar el objeto de la cola; para ello se vuelve a recorrer la entrada (se vuelve a enlazar). El operador Lazy Spool crea su archivo de cola de un modo "perezoso", es decir, cada vez que el operador principal de la cola pide una fila, el operador de cola obtiene una fila de su operador de entrada y la almacena en la cola, en lugar de consumir todas las filas de una vez.

Lazy Spool es un operador lógico.
Ninguno Left Anti Semi Join El operador Left Anti Semi Join devuelve todas las filas de la primera entrada (superior) cuando no hay ninguna fila coincidente en la segunda entrada (inferior). Si no hay ningún predicado de combinación en el panel Propiedades, cada fila es una fila coincidente.

Left Anti Semi Join es un operador lógico.
Ninguno Left Outer Join El operador Left Outer Join devuelve cada fila que cumple el predicado de combinación de la primera entrada (superior) con la segunda entrada (inferior). También devuelve las filas de la primera entrada que no tenían ninguna fila coincidente en la segunda entrada. Las filas no coincidentes en la segunda entrada se devuelven como valores nulos. Si no hay ningún predicado de combinación en el panel Propiedades, cada fila es una fila coincidente.

Left Outer Join es un operador lógico.
Ninguno Left Semi Join El operador Left Semi Join devuelve todas las filas de la primera entrada (superior) cuando hay una fila coincidente en la segunda entrada (inferior). Si no hay ningún predicado de combinación en el panel Propiedades, cada fila es una fila coincidente.

Left Semi Join es un operador lógico.
Log Row Scan El operador Log Row Scan recorre el registro de transacciones.

Log Row Scan es un operador lógico y físico.
Merge Interval El operador Merge Interval combina varios intervalos (que pueden superponerse) para producir intervalos mínimos que no se superponen y que se usan para buscar entradas de índice. Este operador aparece normalmente sobre uno o más operadores Compute Scalar sobre operadores Constant Scan, que construyen los intervalos (representados como columnas de una fila) que combina este operador.

Merge Interval es un operador lógico y físico.
Merge Join El operador Merge Join realiza las siguientes operaciones lógicas de combinación interna (inner join), combinación externa izquierda (left outer join), semicombinación izquierda (left semi join), antisemicombinación izquierda (left anti semi join), combinación externa derecha (right outer join), semicombinación derecha (right semi join), antisemicombinación derecha (right anti semi join) y unión (union).

En el panel Propiedades, el operador Merge Join contiene un predicado merge si la operación realiza una combinación uno a varios, o un predicado many-to-many merge si la operación realiza una combinación varios a varios. El panel Propiedades también incluye una lista separada por comas de las columnas usadas para realizar la operación. El operador Merge Join requiere dos entradas ordenadas por sus respectivas columnas, que se pueden realizar mediante la inserción de operaciones de ordenación explícitas en el plan de consulta. El operador Merge Join es especialmente eficaz si no se necesita una ordenación explícita, por ejemplo, si hay un índice idóneo de árbol b en la base de datos o si el orden se puede aprovechar en varias operaciones, como en una combinación de mezcla y una agrupación con acumulación.

Merge Join es un operador físico. Para obtener más información, vea Comprender las combinaciones de mezcla.
Nested Loops El operador Nested Loops realiza las operaciones lógicas de combinación interna, combinación externa izquierda, semicombinación izquierda y anti semicombinación.

Las combinaciones de bucles anidados realizan una búsqueda en la tabla interna por cada fila de la tabla externa, normalmente mediante un índice. El procesador de consultas decide, en función de los costos anticipados, si debe ordenar o no la entrada externa para mejorar la ubicación de las búsquedas en el índice sobre la entrada interna. Se devuelven las filas que cumplen el predicado (opcional) del panel Propiedades (según corresponda en base a la operación lógica que se realice). Cuando el atributo OPTIMIZED está establecido en True, significa que se usan bucles anidados optimizados (o una ordenación por lotes).

Nested Loops es un operador físico. Para obtener más información, vea Descripción de las combinaciones de bucles anidados.
Ninguno Online Index Insert El operador Online Index Insert indica que se realiza una operación de índice (crear, alterar o excluir) en línea. Es decir, los datos de la tabla subyacente permanecen disponible para los usuarios durante la operación de índice.

Online Index Insert es un operador físico.
Ninguno Paralelismo El operador (o iterador de intercambios) Parallelism realiza las operaciones lógicas de distribución, recopilación y repartición de secuencias. El panel Propiedades puede contener un predicado partition columns con una lista separada por comas de las columnas que se van a particionar. El panel Propiedades también puede contener un predicado order by, con una lista de las columnas que deben conservar el criterio de ordenación durante la creación de particiones.

Nota: Si una consulta se ha compilado como consulta paralela, aunque a la hora de ejecutarse lo haga como consulta en serie, el resultado del plan de presentación generado por SET STATISTICS XML o gracias al uso de la opción Incluir plan de ejecución real de SQL Server Management Studio no contendrá el elemento RunTimeInformation del operador Parallelism. En el resultado de SET STATISTICS PROFILE, el recuento real de filas y el número real de ejecuciones mostrará ceros para el operador Parallelism. Si se produce alguna de estas condiciones, significa que el operador Parallelism solo se ha usado durante la compilación de la consulta, y no en el plan de consulta en runtime. A veces los planes de consulta paralelos se ejecutan en serie si existe una elevada carga simultánea en el servidor.

Parallelism es un operador físico. Para obtener más información sobre el operador Parallelism, consulte El operador Parallelism.
Parameter Table Scan El operador Parameter Table Scan recorre una tabla que actúa como parámetro en la consulta actual. Normalmente, se usa para consultas INSERT en un procedimiento almacenado.

Parameter Table Scan es un operador lógico y físico.
Ninguno Partial Aggregate Partial Aggregate se usa en planes paralelos. Aplica una función de agregación a tantas filas de entrada como sea posible para que la escritura en el disco (también denominada "volcado") no sea necesaria. Hash Match es el único operador físico (iterador) que implementa la agregación parcial.

Partial Aggregate es un operador lógico.
Population Query El operador Population Query rellena la tabla de trabajo de un cursor cuando se abre el cursor.
Refresh Query El operador Refresh Query captura los datos actuales de las filas del búfer de lectura.
Remote Delete El operador Remote Delete elimina las filas de entrada de un objeto remoto.

Remote Delete es un operador lógico y físico.
Remote Index Scan El operador Remote Index Scan digitaliza el índice remoto especificado en el panel Propiedades.

Remote Index Scan es un operador lógico y físico.
Remote Index Seek El operador Remote Index Seek usa la capacidad de búsqueda de un objeto de índice remoto para recuperar filas. El panel Propiedades contiene el nombre del índice remoto que se va a usar y el predicado seek.

Remote Index Seek es un operador lógico y físico.
Remote Insert El operador Remote Insert inserta las filas de entrada en un objeto remoto.

Remote Insert es un operador lógico y físico.
Remote Query El operador Remote Query envía una consulta a un origen remoto. El texto de la consulta enviada al servidor remoto aparece en el panel Propiedades.

Remote Query es un operador lógico y físico.
Remote Scan El operador Remote Scan recorre un objeto remoto. El nombre del objeto remoto aparece en el panel Propiedades.

Remote Scan es un operador lógico y físico.
Remote Update El operador Remote Update actualiza las filas de entrada en un objeto remoto.

Remote Update es un operador lógico y físico.
Repartition Streams El operador (o iterador de intercambios) Repartition Streams usa varias secuencias y produce varias secuencias de registros. No se cambia el contenido de los registros ni su formato. Si el optimizador de consultas usa un filtro de mapas de bits, se reduce el número de filas del flujo de salida. Cada registro de un flujo de entrada se coloca en un flujo de salida. Si el operador conserva el orden, se deben ordenar y mezclar todos los flujos de entrada en varios flujos de salida ordenados. Si la salida tiene particiones, el panel Propiedades contiene un predicado partition columns y las columnas de partición. Si se ordena la salida, el panel Propiedades contiene un predicado order by y los nombres de las columnas que se ordenan. Este operador solo se usa en los planes de consulta paralelos.

Repartition Streams es un operador lógico.
Resultado El operador Result incluye los datos devueltos al final de un plan de consulta. Suele ser el elemento raíz de un plan de presentación.

Result es un elemento del lenguaje.
RID Lookup RID Lookup es una búsqueda de marcadores en un montón que usa un identificador de fila suministrado (RID). El panel Propiedades contiene la etiqueta de marcador utilizada para buscar la fila en la tabla y el nombre de la tabla en la que se busca la fila. RID Lookup siempre va acompañado de NESTED LOOP JOIN.

RID Lookup es un operador físico. Para obtener más información sobre las búsquedas de marcadores, consulte Lectura confirmada y Búsqueda de marcadores.
Ninguno Right Anti Semi Join El operador Right Anti Semi Join muestra todas las filas de la segunda entrada (inferior) para las que no hay una fila coincidente en la primera entrada (superior). Una fila coincidente se define como aquella que cumple el predicado del panel Propiedades (si no hay un predicado, cada fila es una fila coincidente).

Right Anti Semi Join es un operador lógico.
Ninguno Right Outer Join El operador Right Outer Join devuelve cada fila que cumple la combinación de la segunda entrada (inferior) con cada fila coincidente de la primera entrada (superior). También devolverá las filas de la segunda entrada que no tengan filas coincidentes en la primera entrada, combinadas con NULL. Si no hay ningún predicado de combinación en el panel Propiedades, cada fila es una fila coincidente.

Right Outer Join es un operador lógico.
Ninguno Right Semi Join El operador Right Semi Join devuelve todas las filas de la segunda entrada (inferior) para las que hay una fila coincidente en la primera entrada (superior). Si no hay ningún predicado de combinación en el panel Propiedades, cada fila es una fila coincidente.

Right Semi Join es un operador lógico.
Row Count Spool El operador Row Count Spool recorre la entrada, cuenta el número de filas que hay y devuelve ese número de filas sin datos. Este operador se utiliza cuando es importante comprobar la existencia de las filas, en lugar de los datos que éstas contienen. Por ejemplo, si un operador Nested Loops realiza una operación Left Semi Join y el predicado de combinación se aplica a la entrada interna, se puede colocar una cola de recuento de filas en la parte superior de la entrada interior del operador Nested Loops. Después, el operador Nested Loops puede calcular el número de filas que obtiene la cola de recuento de filas (dado que los datos reales del lado interno no son necesarios) para determinar si se devolverá la fila externa.

Row Count Spool es un operador físico.
Ninguno Segment Repartition En un plan de consulta paralelo, a veces hay regiones conceptuales de iteradores. Todos los iteradores de una región así se pueden ejecutar mediante subprocesos paralelos. Las regiones en sí deben ejecutarse en serie. Algunos de los iteradores Parallelism de una región individual se denominan Branch Repartition. El iterador Parallelism situado en el límite de dos de estas regiones se denomina Segment Repartition.

Branch Repartition y Segment Repartition son operadores lógicos.
Segmento El operador Segment divide el conjunto de entrada en segmentos basados en el valor de una o varias columnas. Estas columnas se muestran como argumentos en el operador Segment . A continuación, muestra un segmento cada vez.

Segment es un operador físico y lógico.
Sequence Project El operador Sequence Project agrega columnas para realizar cálculos sobre un conjunto ordenado. Divide el conjunto de entrada en segmentos basados en el valor de una o varias columnas. A continuación, muestra un segmento cada vez. En el operador Sequence Project , las columnas se muestran como argumentos.

Sequence Project es un operador lógico y físico.
Secuencia El operador Sequence controla los planes de actualización grandes. Funcionalmente, ejecuta cada entrada en secuencia (de principio a fin). Normalmente, cada entrada es una actualización de un objeto diferente. Solo devuelve las filas que proceden de su última entrada (inferior).

Sequence es un operador lógico y físico.
Instantánea El operador Snapshot crea un cursor que no detecta las modificaciones realizadas por otros.
Sort El operador Sort ordena todas las filas entrantes. El panel Propeiedades contiene un predicado distinct order by si esta operación elimina las réplicas, o bien un predicado order by con una lista de las columnas, separadas por comas, que se van a ordenar. Las columnas llevan como prefijo el valor ASC, si el orden de las columnas es ascendente, o el valor DESC, si es descendente.

Sort es un operador físico y lógico.
Dividir El operador Split se utiliza para optimizar el procesamiento de actualizaciones. Divide cada operación de actualización en una operación de eliminación y una operación de inserción.

Split es un operador lógico y físico.
Spool El operador Spool guarda un resultado de consulta intermedio en la base de datos tempdb .
Stream Aggregate El operador Stream Aggregate agrupa las filas por una o varias columnas y, a continuación, calcula una o varias expresiones agregadas devueltas por la consulta. El resultado de este operador puedes ser utilizado por operadores posteriores de la consulta, devuelto al cliente, o ambas cosas. El operador Stream Aggregate requiere una entrada ordenada por las columnas dentro de sus grupos. El optimizador usa un operador Sort antes de este operador si un operador Sort anterior no ha ordenado ya los datos o debido a una búsqueda o recorrido de índice ordenado. En la instrucción SHOWPLAN_ALL o en el plan de ejecución gráfico de SQL Server Management Studio, las columnas del predicado group by se enumeran en el panel Propiedades y las expresiones agregadas se enumeran en la columna Valores definidos.

Stream Aggregate es un operador físico.
Switch Switch es un tipo especial de iterador de concatenación que tiene n entradas. A cada operador Switch se asocia una expresión. Dependiendo del valor devuelto de la expresión (entre 0 y n-1), Switch copia el flujo de entrada correspondiente en el flujo de salida. Un uso de Switch consiste en implementar planes de consulta en los que participan cursores de avance rápido con determinados operadores, como el operador TOP .

Switch es un operador lógico y físico.
Table Delete El operador Table Delete elimina filas de la tabla especificada en el panel Propiedades del plan de ejecución de consulta.

Table Delete es un operador físico.
Table Insert El operador Table Insert inserta filas de su entrada en la tabla especificada en el panel Propiedades del plan de ejecución de consulta. El panel Propiedades contiene también un predicado set, que indica el valor en el que se establece cada columna. Si Table Insert no tiene elementos secundarios para los valores de inserción, se obtendrá la fila insertada del propio operador Insert.

Table Insert es un operador físico.
Table Merge El operador Table Merge aplica un flujo de datos de mezcla a un montón. El operador elimina, actualiza o inserta filas en la tabla especificada en el panel Propiedades del operador. La operación real realizada depende del valor en runtime de la propiedad ActionColumn.

Table Merge es un operador físico.
Table Scan El operador Table Scan recupera todas las filas de la tabla especificada en el panel Propiedades del plan de ejecución de consulta. Si hay un predicado where en el panel Propiedades, solo se devuelven las filas que cumplan el predicado.

Table Scan es un operador lógico y físico.
Table Spool El operador Table Spool recorre la entrada y coloca una copia de cada fila en una tabla de cola oculta almacenada en la base de datos tempdb y que solo existe durante la duración de la consulta. Si se hace retroceder el operador (por ejemplo, con un operador Nested Loops ) pero no es necesario volver a enlazar, se usan los datos de la cola en lugar de volver a examinar la entrada.

Table Spool es un operador físico.
Table Update El operador Table Update actualiza las filas de entrada de la tabla especificada en el panel Propiedades del plan de ejecución de consulta. El predicado set determina el valor de cada columna actualizada. Se puede hacer referencia a estos valores en la cláusula SET o en cualquier parte del operador, y en cualquier parte de esta consulta.

Table Update es un operador físico.
Table-valued Function El operador Table-valued Function evalúa una función con valores de tabla (Transact-SQL o CLR) y almacena las filas resultantes en la base de datos tempdb. Cuando los iteradores principales solicitan las filas, Table-valued Function devuelve las filas desde tempdb.

Las consultas con llamadas a funciones con valores de tablas generan planes de consultas con el iterador de la Table-valued Function . Table-valued Function se puede evaluar con valores de parámetro diferentes:

- Table-valued Function XML Reader escribe un BLOB XML como parámetro y genera un conjunto de filas que representa los nodos XML en el orden del documento XML. Otros parámetros de entrada pueden restringir los nodos XML devueltos a un subconjunto del documento XML.

- Table Valued Function XML Reader with XPath filter es un tipo especial de XML Reader Table-valued Function que restringe la salida a los nodos XML que satisfacen una expresión XPath.

Table-valued Function es un operador lógico y físico.
Top (Principales) El operador Top recorre la entrada y solo devuelve el primer número o porcentaje especificado de filas, basándose en un criterio de ordenación si es posible. Opcionalmente, el panerl Propiedades puede contener una lista de las columnas en las que se comprueban los valores equivalentes. En los planes de actualización, se usa el operador Top para aplicar límites de recuento de filas.

Top es un operador lógico y físico.
Ninguno Top N Sort Top N Sort es parecido al iterador Sort , excepto en que solo se necesitan las primeras N líneas, no todo el conjunto de resultados. Para valores pequeños de N, el motor de ejecución de consultas de SQL Server intenta realizar toda la operación de ordenación en memoria. Para valores grandes de N, el motor de ejecución de consultas recurre al método más genérico de ordenación, en el que N no es un parámetro.
UDX Los operadores extendidos (UDX) implementan una de las múltiples operaciones XQuery y XPath de SQL Server.

- El operador extendido (UDX) FOR XML sirve para serializar el conjunto de filas relacional que introduce en la representación XML en una única columna BLOB de una única fila de salida. Es un operador de agregado XML que depende del orden.

- El operador extendido (UDX) XML SERIALIZER es un operador de agregado XML que depende del orden. Especifica filas que representan nodos XML o valores escalares de XQuery en el orden del documento XML y produce un objeto BLOB XML serializado en una única columna XML de una única fila de salida.

- El operador extendido (UDX) XML FRAGMENT SERIALIZER es un tipo especial de XML SERIALIZER que se usa para procesar filas de entrada que representan fragmentos XML que se insertan en la extensión de modificación de datos de inserción XQuery.

- El operador extendido (UDX) XQUERY STRING evalúa el valor de cadena XQuery de las filas de entrada que representan nodos XML. Es un operador de agregado de cadena que depende del orden. Produce una fila con columnas que representa el valor escalar de XQuery que contiene el valor de cadena de la entrada.

- El operador extendido (UDX) XQUERY LIST DECOMPOSER es un operador de descomposición de lista XQuery. Para cada fila de entrada que representa un nodo XML, produce una o varias filas, cada una de las cuales representa un valor escalar de XQuery que contiene un valor de elemento de lista si la entrada es de tipo lista XSD.

- El operador extendido (UDX) XQUERY DATA evalúa la función XQuery fn:data() en la entrada que representa nodos XML. Es un operador de agregado de cadena que depende del orden. Genera una fila con columnas que representa el valor escalar de XQuery que contiene el resultado de fn:data().

- El operador extendido XQUERY CONTAINS evalúa la función XQuery fn:contains() en la entrada que representa nodos XML. Es un operador de agregado de cadena que depende del orden. Genera una fila con columnas que representa el valor escalar de XQuery que contiene el resultado de fn:contains().

- El operador extendido UPDATE XML NODE actualiza el nodo XML en la extensión de modificación de datos de reemplazo XQuery del método modify() en el tipo XML.

Los operadores UDX son operadores lógicos y físicos.
Unión El operador Union recorre varias entradas, obtiene cada fila recorrida y quita los duplicados.

Union es un operador lógico.
Actualizar El operador Update actualiza cada fila a partir de su entrada en el objeto especificado en el panel Propiedades del plan de ejecución de consulta.

Update es un operador lógico. El operador físico es Table Update, Index Updateo Clustered Index Update.
Window Spool El operador Window Spool expande cada fila del conjunto de filas que representa la ventana asociada con él. En una consulta, la cláusula OVER define la ventana de un conjunto de resultados de la consulta y, a continuación, una función de ventana calcula un valor para cada fila de la ventana.

Window Spool es un operador lógico y físico.

Nota:

La documentación utiliza el término árbol B generalmente en referencia a los índices. En los índices del almacén de filas, el motor de la base de datos implementa un árbol B+. Esto no se aplica a los índices de almacén de columnas ni a los índices de tablas optimizadas para memoria. Para obtener más información, consulte la guía de diseño y arquitectura de índices de SQL Server y Azure SQL.