Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los operadores describen cómo SQL Server ejecuta una consulta o una instrucción lenguaje de manipulación de datos (DML). El optimizador de consultas usa operadores para crear un plan de consulta para 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 del plan de ejecución gráfico en SQL Server Management Studio o las clases de eventos Showplan de SQL Server Profiler.
Los operadores se clasifican como operadores lógicos y físicos.
Operadores lógicos
Los operadores lógicos describen la operación algebraica relacional que se utiliza para procesar una expresión. Es decir, los operadores lógicos describen conceptualmente qué operación debe realizarse.
Operadores físicos
Los operadores físicos implementan la operación descrita por operadores lógicos. Cada operador físico es un objeto o rutina que realiza una operación. Por ejemplo, algunos operadores físicos acceden a columnas o filas desde una tabla, índice o vista. Otros operadores físicos realizan otras operaciones, como cálculos, agregaciones, comprobaciones de integridad de datos o combinaciones. Los operadores físicos tienen costos asociados a ellos.
Los operadores físicos inicializan, recopilan datos y se cierran. En concreto, el operador físico puede responder a las tres llamadas de método siguientes:
Init():el método Init() hace que un operador físico se inicialice y configure las estructuras de datos necesarias. El operador físico puede recibir muchas llamadas Init(), aunque normalmente un operador físico recibe solo una.
GetNext():el método GetNext() hace que un operador físico obtenga la primera o posterior fila de datos. El operador físico puede recibir cero o muchas llamadas GetNext().
Close():el método Close() hace que un operador físico realice algunas operaciones de limpieza y se apague. Un operador físico solo recibe una llamada Close().
El método GetNext() devuelve una fila de datos y el número de veces que se llama aparece como ActualRows en la salida del plan de presentación que se genera mediante SET STATISTICS PROFILE ON o SET STATISTICS XML ON. Para obtener más información sobre estas opciones SET, vea SET STATISTICS PROFILE (Transact-SQL) y SET STATISTICS XML (Transact-SQL).
Los recuentos ActualRebinds y ActualRewinds que aparecen en la salida del plan de presentación hacen referencia al número de veces que se llama al método Init(). A menos que un operador esté en el lado interno de una combinación de bucle, ActualRebinds es igual a uno y ActualRewinds es igual a cero. Si un operador está en el lado interno de una unión en bucle, la suma del número de reenlaces y rebobinados debe ser igual al número de filas procesadas en el lado externo de la unión. Un reenlace significa que uno o varios de los parámetros correlacionados de la combinación han cambiado y se debe volver a evaluar el lado interno. Un rebobinado significa que ninguno de los parámetros correlacionados ha cambiado y se puede reutilizar 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. Solo se rellenan para los operadores Spool de índice no agrupado, Remote Query, Spool de cuenta de filas, Sort, Spool de tabla y Función valorada en tabla.
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 están presentes en un plan de presentación XML, son comparables a EstimateRebinds y EstimateRewinds. Cuando están ausentes, el número estimado de filas (EstimateRows) es comparable al número real de filas (ActualRows). Tenga en cuenta que la salida del Showplan gráfico muestra ceros para los reenlaces y rebobinados actuales cuando están ausentes.
Un contador relacionado, ActualEndOfScans, solo está disponible cuando se genera la salida del plan de presentación mediante SET STATISTICS XML ON. Cada vez que un operador físico alcanza el final de su flujo de datos, este contador se incrementa en uno. Un operador físico puede llegar al final de su flujo de datos cero, uno o varias veces. Al igual que con los reenlaces y los rebobinados, el número de finales de escaneos puede ser más de uno únicamente si el operador está en el lado interno de una unión de bucle. El número de finales de escaneos debe ser menor o igual que la suma del número de vinculaciones y rebobinados.
Asignación de operadores físicos y lógicos
El optimizador de consultas crea un plan de consulta como un árbol que consta de operadores lógicos. Una vez que el optimizador de consultas crea el plan, el optimizador de consultas elige el operador físico más eficaz para cada operador lógico. El optimizador de consultas usa un enfoque basado en costos para determinar qué operador físico implementará un operador lógico.
Normalmente, varios operadores físicos pueden implementar una operación lógica. Sin embargo, en raras ocasiones, un operador físico también puede implementar varias operaciones lógicas.
Descripciones del operador
Esta sección contiene descripciones de los operadores lógicos y físicos.
| Icono gráfico del plan de ejecución | Operador showplan | Descripción |
|---|---|---|
| Ninguno | Aggregate |
El Aggregate operador calcula una expresión que contiene MIN, MAX, SUM, COUNT o AVG. El Aggregate operador puede ser un operador lógico o un operador físico. |
|
Arithmetic Expression |
El Arithmetic Expression operador calcula un nuevo valor de los valores existentes en una fila.
Arithmetic Expression no se usa en SQL Server 2014. |
|
Assert |
El Assert operador comprueba una condición. Por ejemplo, valida la integridad referencial o garantiza que una subconsulta escalar devuelva una fila. Para cada fila de entrada, el Assert operador evalúa la expresión en la Argument columna del plan de ejecución. Si esta expresión se evalúa como NULL, la fila se pasa a través del Assert operador y la ejecución de la consulta continúa. Si esta expresión se evalúa como un valor distinto de null, se generará el error adecuado. El Assert operador es un operador físico. |
|
Assign |
El Assign operador asigna el valor de una expresión o una constante a una variable.
Assign es un elemento de lenguaje. |
| Ninguno | Asnyc Concat |
El Asnyc Concat operador solo se usa en consultas remotas (consultas distribuidas). Tiene n hijos y un nodo padre. Normalmente, algunos de los nodos secundarios son computadoras remotas que participan en una consulta distribuida.
Asnyc Concat emite open() llamadas a todos los hijos y aplica un mapa de bits a cada uno simultáneamente. Para cada bit que sea 1, Async Concat envía las filas de salida al nodo primario a petición. |
|
Bitmap |
SQL Server usa el operador Bitmap para implementar el filtrado de mapa de bits en planes de consulta paralelos. El filtrado de mapa de bits acelera la ejecución de consultas mediante la eliminación de filas con valores de clave que no pueden generar registros de combinación antes de pasar filas a través de otro operador, como el Parallelism operador . Un filtro de mapa 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. Al quitar filas innecesarias al principio de la consulta, los operadores subsiguientes tienen menos filas con las que trabajar y el rendimiento general de la consulta mejora. El optimizador determina cuándo un mapa de bits es lo suficientemente selectivo como para ser útil y en qué operadores aplicar el filtro.
Bitmap es un operador físico. |
|
Bitmap Create |
El Bitmap Create operador aparece en la salida del plan de presentación donde se compilan los mapas de bits.
Bitmap Create es un operador lógico. |
|
Bookmark Lookup |
El Bookmark Lookup operador usa un marcador (identificador de fila o clave de agrupación en clústeres) para buscar la fila correspondiente en la tabla o en el índice agrupado. La Argument columna contiene la etiqueta de marcador usada para buscar la fila en la tabla o en el índice agrupado. La Argument columna también contiene el nombre de la tabla o el índice agrupado en el que se busca la fila. Si la cláusula WITH PREFETCH aparece en la Argument columna, el procesador de consultas ha determinado que es óptimo usar la captura previa asincrónica (lectura anticipada) al buscar marcadores en la tabla o en el índice agrupado.Bookmark Lookup no se usa en SQL Server 2014. En su lugar, Clustered Index Seek y RID Lookup proporcionan la funcionalidad de búsqueda de marcadores. El Key Lookup operador también proporciona esta funcionalidad. |
| Ninguno | Branch Repartition |
En un plan de consulta paralelo, a veces hay regiones conceptuales de iteradores. Todos los iteradores de dicha región se pueden ejecutar mediante subprocesos paralelos. Las propias regiones deben ejecutarse en serie. Algunos de los Parallelism iteradores dentro de una región individual se denominan Branch Repartition. El Parallelism iterador en el límite de dos regiones de este tipo se denomina Segment Repartition.
Branch Repartition y Segment Repartition son operadores lógicos. |
| Ninguno | Broadcast |
Broadcast tiene un nodo secundario y n nodos primarios.
Broadcast envía sus filas de entrada a varios consumidores a petición. Cada consumidor obtiene todas las filas. Por ejemplo, si todos los consumidores son partes de construcción de una combinación hash, se crearán n copias de las tablas hash. |
|
Build Hash |
Indica la compilación de una tabla hash por lotes para un índice de almacén de columnas optimizado para memoria xVelocity. |
| Ninguno | Cache |
Cache es una versión especializada del operador Spool . Almacena solo una fila de datos.
Cache es un operador lógico.
Cache no se usa en SQL Server 2014. |
|
Clustered Index Delete |
El Clustered Index Delete operador elimina las filas del índice agrupado especificado en la columna Argumento del plan de ejecución de consultas. Si un predicado WHERE:() está presente en la columna Argument, solo se eliminan las filas que satisfacen el predicado.
Clustered Index Delete es un operador físico. |
|
Clustered Index Insert |
El Clustered Index Insert operador Showplan inserta filas de su entrada en el índice agrupado especificado en la columna Argument. La columna Argument también contiene un predicado SET:(), que indica el valor al que se establece cada columna. Si Clustered Index Insert no tiene elementos secundarios para los valores de inserción, la fila insertada se toma del Insert propio operador.
Clustered Index Insert es un operador físico. |
|
Combinación de índices agrupados | El operador Clustered Index Merge aplica un flujo de datos de combinación a un índice agrupado. El operador elimina, actualiza o inserta filas del índice agrupado especificado en la Argument columna del operador . La operación real realizada depende del valor en tiempo de ejecución de la columna ACTION especificada en la Argument columna del operador .
Clustered Index Merge es un operador físico. |
|
Clustered Index Scan |
El Clustered Index Scan operador examina el índice agrupado especificado en la columna Argumento del plan de ejecución de consultas. Cuando existe un predicado WHERE:() opcional, solo se devuelven las filas que cumplen el predicado. Si la columna Argument contiene la cláusula ORDERED, el procesador de consultas ha solicitado que se devuelva la salida de las filas en el orden en que el índice agrupado lo haya ordenado. Si la cláusula ORDERED no está presente, el motor de almacenamiento examina el índice de la manera óptima, sin ordenar necesariamente la salida.
Clustered Index Scan es un operador lógico y físico. |
|
Clustered Index Seek |
El Clustered Index Seek operador usa la capacidad de búsqueda de índices para recuperar filas de un índice agrupado. La Argument columna contiene el nombre del índice agrupado que se usa y el predicado SEEK:(). El motor de almacenamiento usa el índice para procesar solo las filas que satisfacen este predicado SEEK:(). También puede incluir un predicado WHERE:() donde el motor de almacenamiento evalúa todas las filas que satisfacen el predicado SEEK:(). Sin embargo, esto es opcional y no utiliza índices para completar este proceso.Si la Argument columna contiene la cláusula ORDERED, el procesador de consultas ha determinado que las filas deben devolverse en el orden en que el índice agrupado los haya ordenado. Si la cláusula ORDERED no está presente, el motor de almacenamiento busca el índice de la manera óptima, sin ordenar necesariamente la salida. Permitir que la salida conserve su ordenación puede ser menos eficaz que producir salidas no ordenadas. Cuando aparezca la palabra clave LOOKUP, se realiza una búsqueda de marcadores. En SQL Server 2008 y versiones posteriores, el Key Lookup operador proporciona funcionalidad de búsqueda de marcadores.
Clustered Index Seek es un operador lógico y físico. |
|
Clustered Index Update |
El Clustered Index Update operador actualiza las filas de entrada del índice agrupado especificados en la Argument columna. Si existe un predicado WHERE:(), solo se actualizan las filas que cumplen este predicado. Si existe un predicado SET:(), cada columna actualizada se establece en este valor. Si existe un predicado DEFINE:(), se muestran los valores que define este operador. Estos valores se pueden hacer referencia a ellos en la cláusula SET o en otro lugar dentro de este operador y en otro lugar dentro de esta consulta.
Clustered Index Update es un operador lógico y físico. |
|
Collapse |
El operador Collapse optimiza el procesamiento de actualizaciones. Cuando se realiza una actualización, se puede dividir (mediante el Split operador) en una eliminación y una inserción. La Argument columna contiene una cláusula 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 de clave, reemplaza estas operaciones independientes por una sola operación de actualización más eficaz.
Collapse es un operador lógico y físico. |
|
Columnstore Index Scan |
El Columnstore Index Scan operador examina el índice de almacén de columnas especificado en la Argument columna del plan de ejecución de consultas. |
de proceso |
Compute Scalar |
El Compute Scalar operador evalúa una expresión para generar un valor escalar calculado. A continuación, se puede devolver al usuario, al que se hace referencia en otro lugar de la consulta, o ambos. Un ejemplo de ambos se encuentra en un predicado de filtro o en un predicado de combinación.
Compute Scalar es un operador lógico y físico.Compute Scalar Es posible que los operadores que aparecen en Los planos de presentación generados por SET STATISTICS XML no contengan el RunTimeInformation elemento . En los planos de presentación gráficos, las filas reales, los reenbinados reales y los rebobinados reales podrían estar ausentes en la ventana Propiedades cuando se selecciona la opción Incluir plan de ejecución real en SQL Server Management Studio. Cuando esto ocurre, significa que, aunque estos operadores se usaron en el plan de consulta compilado, otros operadores realizaron su trabajo en el plan de consulta en tiempo de ejecución. Tenga en cuenta también que el número de ejecuciones en la salida del plan de presentación generado por SET STATISTICS PROFILE equivale a la suma de reenlazados y rebobinados en Los planos de presentación generados por SET STATISTICS XML. |
|
Concatenación | El operador Concatenation examina varias entradas y devuelve cada fila escaneada. La concatenación se usa normalmente para implementar la construcción Transact-SQL UNION ALL. El operador físico concatenación tiene dos o más entradas y una salida. La concatenación copia filas de la primera secuencia de entrada al flujo de salida y, a continuación, repite esta operación para cada flujo de entrada adicional. La concatenación es un operador lógico y físico. |
|
Constant Scan |
El Constant Scan operador introduce una o varias filas constantes en una consulta. Con frecuencia se utiliza un operador Compute Scalar después de un Constant Scan para agregar columnas a una fila generada por el operador Constant Scan. |
|
Convert |
El Convert operador convierte un tipo de datos escalar a otro.
Convert es un elemento de lenguaje. |
| Ninguno | Cross Join |
El Cross Join operador combina cada fila de la primera entrada (superior) con cada fila de la segunda entrada (inferior).
Cross Join es un operador lógico. |
|
catchall |
El icono catchall se muestra cuando la lógica que genera planos gráficos de presentación no puede encontrar un icono adecuado para el iterador. El icono catchall no indica necesariamente una condición de error. Hay tres iconos catchall: azul (para iteradores), naranja (para cursores) y verde (para los elementos de lenguaje Transact-SQL). |
| Ninguno | Cursor | Los operadores lógicos y físicos del cursor se usan para describir cómo se ejecuta una consulta o actualización que implica operaciones de cursor. Los operadores físicos describen el algoritmo de implementación física usado para procesar el cursor; por ejemplo, mediante un cursor controlado por conjunto de claves. Cada paso de la ejecución de un cursor implica un operador físico. Los operadores lógicos describen una propiedad del cursor, como el cursor, es de solo lectura. Los operadores lógicos incluyen asincrónicos, optimistas, primarios, solo lectura, bloqueos de desplazamiento, secundarios y sincrónicos. Los operadores físicos incluyen Dynamic, Fetch Query, Keyset, Population Query, Refresh Query e Snapshot. |
|
Declare |
El Declare operador asigna una variable local en el plan de consulta.
Declare es un elemento de lenguaje. |
|
Delete |
El Delete operador elimina de un objeto filas que satisfacen el predicado opcional de la columna Argument. |
|
Deleted Scan |
El Deleted Scan operador examina la tabla eliminada dentro de un desencadenador. |
| Ninguno | Distinct |
El Distinct operador quita duplicados de un conjunto de filas o de una colección de valores.
Distinct es un operador lógico. |
| Ninguno | Distinct Sort |
El Distinct Sort operador lógico examina la entrada, quitando duplicados y ordenando por las columnas especificadas en el predicado DISTINCT ORDER BY:() de la Argument columna.
Distinct Sort es un operador lógico. |
|
Distribuir flujos | El operador Distribute Streams solo se usa en planes de consulta paralelos. El operador Distribute Streams toma un único flujo de entrada de registros y genera varios flujos de salida. El contenido y el formato del registro no cambian. 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, el hash se usa para decidir a qué flujo de salida pertenece un registro de entrada determinado. Si la salida está particionada, la Argument columna contiene un predicado PARTITION COLUMNS:() y las columnas de creación de particiones.
Distribute Streams es un operador lógico |
|
Dynamic |
El Dynamic operador usa un cursor que puede ver todos los cambios realizados por otros usuarios. |
|
Eager Spool | El operador Eager Spool toma toda la entrada, almacenando cada fila en un objeto temporal oculto almacenado en la tempdb base de datos. Si el operador se rebobina (por ejemplo, por parte de un operador Nested Loops), pero no se necesita ningún reenlace, se utiliza el dato temporal en lugar de volver a examinar la entrada. Si se necesita reenlazamiento, se descartan los datos en cola y el objeto de cola se vuelve a generar mediante el examen de la entrada (rebound). El operador Eager Spool construye su archivo spool de manera "ansiosa": cuando el operador primario del spool solicita la primera fila, el operador spool consume todas las filas de su operador de entrada y las almacena en el spool.
Eager Spool es un operador lógico. |
|
Fetch Query |
El Fetch Query operador recupera filas cuando se emite una consulta en un cursor. |
|
Filtro | El operador Filter examina la entrada y devuelve solo las filas que satisfacen la expresión de filtro (predicado) que aparece en la Argument columna. |
| Ninguno | Flow Distinct |
El Flow Distinct operador lógico examina la entrada, quitando duplicados. Mientras que el Distinct operador consume toda la entrada antes de generar cualquier salida, el operador FlowDistinct devuelve cada fila a medida que se obtiene de la entrada (a menos que esa fila sea un duplicado, en cuyo caso se descarta). |
| Ninguno | Full Outer Join |
El operador lógico Full Outer Join devuelve cada fila que satisface el predicado de unión de la entrada superior, combinada con cada fila de la entrada inferior. También devuelve filas de:-La primera entrada que no tenía coincidencias en la segunda entrada. -La segunda entrada que no tenía coincidencias en la primera entrada. La entrada que no contiene los valores coincidentes se devuelve como un valor NULL. Full Outer Join es un operador lógico. |
|
Recopilación de secuencias | El operador Gather Streams solo se usa en planes de consulta paralelos. El operador Gather Streams consume varias secuencias de entrada y genera un único flujo de salida de registros mediante la combinación de los flujos de entrada. El contenido y el formato del registro no cambian. Si este operador conserva el orden, se deben ordenar todos los flujos de entrada. Si se ordena la salida, la Argument columna contiene un predicado ORDER BY:() y los nombres de las columnas que se ordenan.
Gather Streams es un operador lógico. |
|
Hash Match |
El Hash Match operador compila una tabla hash calculando un valor hash para cada fila a partir de su entrada de compilación. Un predicado HASH:() con una lista de columnas usadas para crear un valor hash aparece en la Argument columna. A continuación, para cada fila de sondeo (según corresponda), calcula un valor hash (con la misma función hash) y busca coincidencias en la tabla hash. Si existe un predicado residual (identificado por RESIDUAL:() en la Argument columna), ese predicado también debe cumplirse para que las filas se consideren una coincidencia. El comportamiento depende de la operación lógica que se realiza:Para las combinaciones, use la primera entrada (superior) para compilar la tabla hash y la segunda entrada (inferior) para sondear la tabla hash. La salida coincide (o no coincide) según el tipo de combinación. Si varias combinaciones usan la misma columna de combinación, estas operaciones se agrupan en un equipo hash. Para los operadores distintos o agregados, use la entrada para construir la tabla hash (eliminando duplicados y calculando las expresiones agregadas). Cuando se construye la tabla hash, recorra la tabla y muestra todas las entradas. Para el operador union, use la primera entrada para compilar la tabla hash (quitando duplicados). Use la segunda entrada (que no debe tener duplicados) para sondear la tabla hash, devolver todas las filas que no tienen coincidencias, examinar la tabla hash y devolver todas las entradas. Hash Match es un operador físico. |
el |
If |
El If operador lleva a cabo el procesamiento condicional basado en una expresión.
If es un elemento de lenguaje. |
| Ninguno | Inner Join |
El Inner Join operador lógico devuelve cada fila que satisface la combinación de la primera entrada (superior) con la segunda entrada (inferior). |
|
Insert |
El Insert operador lógico inserta cada fila de su entrada en el objeto especificado en la Argument columna. El operador físico es el Table Insertoperador , Index Inserto Clustered Index Insert . |
|
Escaneo insertado | El operador Inserted Scan examina la tabla insertada . Inserted Scan es un operador lógico y físico. |
|
Intrinsic |
El Intrinsic operador invoca una función Transact-SQL interna.
Intrinsic es un elemento de lenguaje. |
|
Iterator |
El Iterator icono comodín se muestra cuando la lógica que genera los planos gráficos no puede encontrar un icono adecuado para el iterador. El icono catchall no indica necesariamente una condición de error. Hay tres iconos catchall: azul (para iteradores), naranja (para cursores) y verde (para construcciones de lenguaje Transact-SQL). |
|
Key Lookup |
El Key Lookup operador es una búsqueda de marcadores en una tabla con un índice agrupado. La Argument columna contiene el nombre del índice agrupado y la clave de agrupación en clústeres usada para buscar la fila en el índice clúster.
Key Lookup siempre va acompañado de un Nested Loops operador. Si la cláusula WITH PREFETCH aparece en la Argument columna, el procesador de consultas ha determinado que es óptimo usar la captura previa asincrónica (lectura previa) 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 del ajuste del rendimiento. Por ejemplo, el rendimiento de las consultas podría mejorarse agregando un índice de cobertura. |
de conjunto de conjunto de claves |
Keyset |
El Keyset operador usa un cursor que puede ver las actualizaciones, pero no las inserciones realizadas por otros usuarios. |
|
Language Element |
El icono Language Element de 'general' se muestra cuando la lógica que genera planos gráficos no puede encontrar un icono adecuado para el iterador. El icono catchall no indica necesariamente una condición de error. Hay tres iconos catchall: azul (para iteradores), naranja (para cursores) y verde (para construcciones de lenguaje Transact-SQL). |
|
Lazy Spool | El operador lógico Lazy Spool almacena cada fila de su entrada en un objeto temporal oculto almacenado en la tempdb base de datos. Si el operador se rebobina (por ejemplo, por un Nested Loops operador), pero no se necesita ningún reenlace, se aprovechan los datos enrollados en lugar de volver a examinar la entrada. Si se necesita reenlazamiento, los datos almacenados en cola se eliminan y el objeto de cola se vuelve a construir al volver a escanear la entrada reenlazada. El operador Lazy Spool crea su archivo de spool de manera "perezosa", es decir, cada vez que el operador primario del spool solicita una fila, el operador de spool obtiene una fila de su operador de entrada y la almacena en el spool, en lugar de procesar todas las filas a la vez. Lazy Spool es un operador lógico. |
| Ninguno | Left Anti Semi Join |
El Left Anti Semi Join operador devuelve cada fila de la primera entrada (superior) cuando no hay ninguna fila coincidente en la segunda entrada (inferior). Si no existe ningún predicado de combinación en la Argument columna, cada fila es una fila coincidente.
Left Anti Semi Join es un operador lógico. |
| Ninguno | Left Outer Join |
El Left Outer Join operador devuelve cada fila que satisface la combinación de la primera entrada (superior) con la segunda entrada (inferior). También devuelve todas las filas de la primera entrada que no tenían filas coincidentes en la segunda entrada. Las filas que no coinciden en la segunda entrada se devuelven como valores NULL. Si no existe ningún predicado de combinación en la Argument columna, cada fila es una fila coincidente.
Left Outer Join es un operador lógico. |
| Ninguno | Left Semi Join |
El Left Semi Join operador devuelve cada fila de la primera entrada (superior) cuando hay una fila coincidente en la segunda entrada (inferior). Si no existe ningún predicado de combinación en la Argument columna, cada fila es una fila coincidente.
Left Semi Join es un operador lógico. |
|
Log Row Scan |
El Log Row Scan operador examina el registro de transacciones.
Log Row Scan es un operador lógico y físico. |
|
Merge Interval |
El Merge Interval operador combina varios intervalos (potencialmente superpuestos) para generar intervalos mínimos y no superpuestos que, a continuación, se usan para buscar entradas de índice. Este operador suele aparecer sobre uno o varios operadores Compute Scalar que a su vez están sobre operadores Constant Scan, los cuales construyen los intervalos (representados como columnas en una fila) que este operador combina.
Merge Interval es un operador lógico y físico. |
|
Combinación de mezcla | El operador Merge Join realiza la combinación interna, la combinación externa izquierda, la semicombinación izquierda, la combinación anti-semi izquierda, la combinación externa derecha, la semicombinación derecha y las operaciones lógicas de unión. En la Argument columna, 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 de varios a varios. La Argument columna también incluye una lista separada por comas de columnas que se usa para realizar la operación. El operador Merge Join requiere dos entradas ordenadas en sus respectivas columnas, posiblemente mediante la inserción de operaciones de ordenación explícitas en el plan de consulta. La unión de mezcla es especialmente eficaz si no se requiere una ordenación explícita, por ejemplo, si hay un índice B-tree adecuado en la base de datos o si se puede aprovechar el orden de clasificación para varias operaciones, como una unión de mezcla y agrupación con acumulación.
Merge Join es un operador físico. |
|
Nested Loops |
El operador Nested Loops realiza las operaciones lógicas de unión interna, unión externa izquierda, unión semia izquierda y unión anti semia izquierda. Las combinaciones de bucles anidados realizan una búsqueda en la tabla interna para cada fila de la tabla externa, normalmente mediante un índice. El procesador de consultas decide, en función de los costos previstos, si se ordena la entrada externa para mejorar la localidad de las búsquedas en el índice sobre la entrada interna. Las filas que cumplan el predicado (opcional) de la Argument columna se devuelven según corresponda, en función de la operación lógica que se realiza.
Nested Loops es un operador físico. |
|
Nonclustered Index Delete |
El operador Nonclustered Index Delete elimina las filas de entrada del índice no agrupado especificado en la columna Argument.
Nonclustered Index Delete es un operador físico. |
|
Index Insert |
El operador Index Insert inserta filas de su entrada en el índice no agrupado especificado en la columna Argument. La Argument columna también contiene un predicado SET:(), que indica el valor al que se establece cada columna.
Index Insert es un operador físico. |
|
Index Scan |
El Index Scan operador recupera todas las filas del índice no clúster especificado en la Argument columna. Si aparece un predicado WHERE:() opcional en la Argument columna, solo se devuelven las filas que cumplen el predicado.
Index Scan es un operador lógico y físico. |
|
Index Seek |
El Index Seek operador usa la capacidad de búsqueda de índices para recuperar filas de un índice no clúster. La Argument columna contiene el nombre del índice no agrupado que se está usando. También contiene el predicado SEEK:(). El motor de almacenamiento usa el índice para procesar solo las filas que satisfacen el predicado SEEK:(). Opcionalmente, puede incluir un predicado WHERE:(), que el motor de almacenamiento evaluará en todas las filas que satisfacen el predicado SEEK:() (no usa los índices para hacerlo). Si la Argument columna contiene la cláusula ORDERED, el procesador de consultas ha determinado que las filas deben devolverse en el orden en el que el índice no clúster los ha ordenado. Si la cláusula ORDERED no está presente, el motor de almacenamiento busca el índice de la manera óptima (lo que no garantiza que se ordenará la salida). Permitir que la salida conserve su ordenación puede ser menos eficaz que producir salidas no ordenadas.
Index Seek es un operador lógico y físico. |
|
Spool de índices | El operador físico Index Spool contiene un predicado SEEK:() en la Argument columna. El operador Index Spool examina sus filas de entrada, coloca una copia de cada fila en un archivo de cola oculto (almacenado en la tempdb base de datos y existente solo durante la vigencia de la consulta) y crea un índice no agrupado en las filas. Esto le permite usar la funcionalidad de búsqueda de índices para generar solo las filas que satisfacen el predicado SEEK:(). Si el operador se rebobina (por ejemplo, por un Nested Loops operador), pero no se necesita ningún reajuste, se usan los datos almacenados temporalmente en lugar de escanear de nuevo la entrada. |
|
Nonclustered Index Update |
El Nonclustered Index Update operador físico actualiza las filas de su entrada en el índice no clúster especificado en la columna Argument. Si existe un predicado SET:(), cada columna actualizada se establece en este valor.
Nonclustered Index Update es un operador físico. |
|
Inserción de índice en línea | El operador físico Online Index Insert indica que se realiza una operación de creación, modificación o eliminación de índices en línea. Es decir, los datos de la tabla subyacente permanecen disponibles para los usuarios durante la operación de índice. |
| Ninguno | Parallelism |
El Parallelism operador realiza las operaciones lógicas de distribución, recopilación de secuencias y repartición de secuencias. Las Argument columnas pueden contener un predicado PARTITION COLUMNS:() con una lista separada por comas de las columnas particionadas. Las Argument columnas también pueden contener un predicado ORDER BY:(), enumerando las columnas para conservar el criterio de ordenación durante la creación de particiones.
Parallelism es un operador físico.Nota: Si una consulta se ha compilado como una consulta paralela, pero en tiempo de ejecución se ejecuta como una consulta serie, la salida del plan de presentación generada por SET STATISTICS XML o mediante la opción Incluir plan de ejecución real en SQL Server Management Studio no contendrá el RunTimeInformation elemento para el Parallelism operador. En la salida de SET STATISTICS PROFILE, los recuentos reales de filas y el número de ejecuciones reales se mostrarán como ceros para el operador Parallelism. Cuando se produce alguna condición, significa que el Parallelism operador solo se usó durante la compilación de consultas y no en el plan de consulta en tiempo de ejecución. Tenga en cuenta que, a veces, los planes de consulta paralelos se ejecutan en serie si hay una carga simultánea alta en el servidor. |
|
Parameter Table Scan |
El Parameter Table Scan operador examina una tabla que actúa como parámetro en la consulta actual. Normalmente, esto se usa para las consultas INSERT dentro de un procedimiento almacenado.
Parameter Table Scan es un operador lógico y físico. |
| Ninguno | Agregado parcial |
El agregado parcial se usa en planes paralelos. Aplica una función de agregación a tantas filas de entrada como sea posible para que no sea necesario escribir en el disco (conocido como "desbordamiento").
Hash Match es el único operador físico (iterador) que implementa la agregación de particiones.
Aggregate parcial es un operador lógico. |
|
Population Query |
El Population Query operador rellena la tabla de trabajo de un cursor cuando se abre el cursor. |
|
Refresh Query |
El Refresh Query operador obtiene los datos actuales de las filas en el búfer de obtención. |
|
Remote Delete |
El Remote Delete operador elimina las filas de entrada de un objeto remoto.
Remote Delete es un operador lógico y físico. |
|
Examen de índice remoto | El operador Remote Index Scan examina el índice remoto especificado en la columna Argument. Remote Index Scan es un operador lógico y físico. |
|
Búsqueda de índice remoto | El operador Remote Index Seek usa la capacidad de búsqueda de un objeto de índice remoto para recuperar filas. La Argument columna contiene el nombre del índice remoto que se usa y el predicado SEEK:().
Remote Index Seek es un operador físico lógico. |
|
Inserción remota | 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 Remote Query operador envía una consulta a un origen remoto. El texto de la consulta enviada al servidor remoto aparece en la Argument columna .
Remote Query es un operador lógico y físico. |
|
Remote Scan |
El Remote Scan operador examina un objeto remoto. El nombre del objeto remoto aparece en la Argument columna .
Remote Scan es un operador lógico y físico. |
|
Remote Update |
El Remote Update operador actualiza las filas de entrada en un objeto remoto.
Remote Update es un operador lógico y físico. |
|
Redistribución de flujos | El operador Repartition Streams consume varias secuencias y genera varios flujos de registros. El contenido y el formato del registro no cambian. Si el optimizador de consultas usa un filtro de mapa 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 este operador conserva el orden, todos los flujos de entrada deben ordenarse y combinarse en varios flujos de salida ordenados. Si la salida está particionada, la columna Argument contiene un predicado PARTITION COLUMNS:() y las columnas de partición. Si la salida está ordenada, la columna Argument contiene un predicado ORDER BY:() y las columnas que se ordenan.
Repartition Streams es un operador lógico. El operador solo se usa en planes de consulta paralelos. |
|
Result |
El operador Result es el dato devuelto al finalizar un plan de consulta. Normalmente es el elemento raíz de un plan de presentación.
Result es un elemento de lenguaje. |
|
RID Lookup |
RID Lookup es una búsqueda de marcadores en un montón mediante un identificador de fila proporcionado (RID). La Argument columna contiene la etiqueta de marcador usada 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, vea "Búsqueda de marcadores" en el blog de MSDN SQL Server. |
| Ninguno | Right Anti Semi Join |
El Right Anti Semi Join operador genera cada fila de la segunda entrada (inferior) cuando no existe una fila coincidente en la primera entrada (superior). Una fila coincidente se define como una fila que satisface el predicado de la Argument columna (si no existe ningún predicado, cada fila es una fila coincidente).
Right Anti Semi Join es un operador lógico. |
| Ninguno | Right Outer Join |
El Right Outer Join operador devuelve cada fila que satisface la combinación de la segunda entrada (inferior) con cada fila coincidente de la primera entrada (superior). También devuelve todas las filas de la segunda entrada que no tenían filas coincidentes en la primera entrada, combinadas con NULL. Si no existe ningún predicado de combinación en la Argument columna, cada fila es una fila coincidente.
Right Outer Join es un operador lógico. |
| Ninguno | Right Semi Join |
El Right Semi Join operador devuelve cada fila de la segunda entrada (inferior) cuando hay una fila coincidente en la primera entrada (superior). Si no existe ningún predicado de combinación en la Argument columna, cada fila es una fila coincidente.
Right Semi Join es un operador lógico. |
|
Buffer para recuento de filas | El operador Row Count Spool examina la entrada, contando cuántas filas están presentes y devolviendo el mismo número de filas sin datos en ellos. Este operador se usa cuando es importante comprobar la existencia de filas, en lugar de los datos contenidos en las filas. Por ejemplo, si un Nested Loops operador realiza una operación de semicombinación izquierda 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 interna del Nested Loops operador. A continuación, el operador Nested Loops puede determinar cuántas filas son producidas por la cola de recuento de filas para decidir si se devuelve la fila externa, ya que no se necesitan los datos reales del lado interno.
Row Count Spool es un operador físico. |
|
Segmento | Segment es un operador físico y lógico. Divide el conjunto de entrada en segmentos en función del valor de una o varias columnas. Estas columnas se muestran como argumentos en el operador Segment . A continuación, el operador genera un segmento a la vez. |
| Ninguno | Segment Repartition |
En un plan de consulta paralelo, a veces hay regiones conceptuales de iteradores. Todos los iteradores de dicha región se pueden ejecutar mediante subprocesos paralelos. Las regiones deben ejecutarse de manera secuencial. Algunos de los Parallelism iteradores dentro de una región individual se denominan Branch Repartition. El Parallelism iterador en el límite de dos regiones de este tipo se denomina Segment Repartition.
Branch Repartition y Segment Repartition son operadores lógicos. |
|
Sequence |
El Sequence operador impulsa planes de actualización amplios. Funcionalmente, ejecuta cada entrada en secuencia (de arriba a abajo). Cada entrada suele ser una actualización de un objeto diferente. Devuelve solo las filas que proceden de su última entrada (inferior).
Sequence es un operador lógico y físico. |
|
Sequence Project |
El Sequence Project operador agrega columnas para realizar cálculos en un conjunto ordenado. Divide el conjunto de entrada en segmentos en función del valor de una o varias columnas. A continuación, el operador genera un segmento a la vez. Estas columnas se muestran como argumentos en el Sequence Project operador .
Sequence Project es un operador lógico y físico. |
|
Instantánea | El operador Snapshot crea un cursor que no ve los cambios realizados por otros usuarios. |
|
Sort |
El Sort operador ordena todas las filas entrantes. La Argument columna contiene un predicado DISTINCT ORDER BY:() si esta operación quita duplicados o un predicado ORDER BY:() con una lista separada por comas de las columnas que se ordenan. Las columnas tienen como prefijo el valor ASC si las columnas se ordenan en orden ascendente o el valor DESC si las columnas se ordenan en orden descendente.
Sort es un operador lógico y físico. |
|
Split |
El Split operador se usa para optimizar el procesamiento de actualizaciones. Divide cada operación de actualización en una operación de eliminación e inserción.
Split es un operador lógico y físico. |
|
Bobina | El operador Spool guarda un resultado de consulta intermedio en la tempdb base de datos. |
|
Stream Aggregate |
El Stream Aggregate operador agrupa filas por una o varias columnas y, a continuación, calcula una o varias expresiones de agregado devueltas por la consulta. Los operadores posteriores pueden hacer referencia a la salida de este operador en la consulta, se devuelven al cliente o ambos. El Stream Aggregate operador requiere la entrada ordenada por las columnas dentro de sus grupos. El optimizador usará un Sort operador antes de este operador si los datos aún no están ordenados debido a un operador anterior Sort o debido a una búsqueda o examen de índice ordenados. En la instrucción SHOWPLAN_ALL o el plan de ejecución gráfico de SQL Server Management Studio, las columnas del predicado GROUP BY se muestran en la Argument columna y las expresiones de agregado se muestran en la columna Valores definidos .
Stream Aggregate es un operador físico. |
|
Interruptor | Switch es un tipo especial de iterador de concatenación que tiene n entradas. Una expresión está asociada a cada operador Switch . Según el valor devuelto de la expresión (entre 0 y n-1), Switch copia el flujo de entrada adecuado en el flujo de salida. Un uso de Switch es implementar planes de consulta que implican cursores de avance rápido con determinados operadores, como el operador TOP . Switch es un operador lógico y físico. |
|
Table Delete |
El Table Delete operador físico elimina las filas de la tabla especificada en la Argument columna del plan de ejecución de la consulta. |
|
Table Insert |
El operador Table Insert inserta filas de su entrada en la tabla especificada en la columna Argument del plan de ejecución de la consulta. La Argument columna también contiene un predicado SET:(), que indica el valor al que se establece cada columna. Si Table Insert no tiene hijos para insertar valores, la fila que se inserta se toma del operador Insertar propiamente dicho.
Table Insert es un operador físico. |
|
Fusión de tablas | El operador Table Merge aplica un flujo de datos de combinación a un montón. El operador elimina, actualiza o inserta filas en la tabla especificada en la Argument columna del operador . La operación real realizada depende del valor en tiempo de ejecución de la columna ACTION especificada en la Argument columna del operador .
Table Merge es un operador físico. |
|
Table Scan |
El Table Scan operador recupera todas las filas de la tabla especificada en la Argument columna del plan de ejecución de consultas. Si aparece un predicado WHERE:() en la Argument columna, solo se devuelven las filas que cumplen el predicado.
Table Scan es un operador lógico y físico. |
|
Intercalación de tabla | El operador Table Spool examina la entrada y coloca una copia de cada fila en una tabla de cola oculta que se almacena en la base de datos tempdb y que solo existe durante la vigencia de la consulta. Si el operador se rebobina (por ejemplo, por un operador Nested Loops), pero no se necesita ningún reenlace, se usan los datos almacenados en lugar de reexaminar la entrada.
Table Spool es un operador físico. |
|
Table Update |
El Table Update operador físico actualiza las filas de entrada de la tabla especificadas en la Argument columna del plan de ejecución de consultas. El predicado SET:() determina el valor de cada columna actualizada. Estos valores se pueden hacer referencia a ellos en la cláusula SET o en otro lugar dentro de este operador, así como en otro lugar dentro de esta consulta. |
|
Función con valores de tabla | El operador Función con valores de tabla evalúa una función con valores de tabla (ya sea Transact-SQL o CLR) y almacena las filas resultantes en la base de datos tempdb. Cuando los iteradores primarios solicitan las filas, Table-valued Function devuelve las filas de tempdb.Las consultas con llamadas a funciones con valores de tabla generan planes de consulta con el iterador Función con valores de tabla. Función con valores de tabla se puede evaluar con valores de parámetro diferentes. El Lector XML de función con valores de tabla introduce un BLOB XML como parámetro y genera un conjunto de filas que representa nodos XML en orden de documento XML. Otros parámetros de entrada pueden restringir los nodos XML devueltos a un subconjunto de documentos XML. Table Valued Function XML Reader with XPath filter is a special type of XML Reader Table-valued Function that restricts output to XML nodes que satisfacen una expresión XPath. Table-valued Function es un operador lógico y físico. |
|
Superior | El operador Top examina la entrada, devolviendo solo el primer número o porcentaje de filas especificados, posiblemente en función de un criterio de ordenación. La Argument columna puede contener una lista de las columnas que se están comprobando para los vínculos. En los planes de actualización, el operador Top se usa para aplicar límites de recuento de filas.
Top es un operador lógico y físico.
Top es un operador lógico y físico. |
| Ninguno | Ordenación N superior |
La ordenación N superior es similar al Sort iterador, excepto que solo se necesitan las primeras N filas y 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 muchas operaciones XQuery y XPath en SQL Server. Todos los operadores UDX son operadores lógicos y físicos. El operador extendido (UDX) FOR XML se usa para serializar el conjunto de filas relacionales que introduce en la representación XML en una sola columna BLOB en una sola fila de salida. Es un operador de agregación XML sensible al orden.El operador extendido (UDX) XML SERIALIZER es un operador de agregación XML confidencial para pedidos. Introduce filas que representan nodos XML o escalares XQuery en orden de documento XML y genera un BLOB XML serializado en una sola columna XML en una sola 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 mediante la inserción de 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 agregación de cadenas sensible al orden. Genera una fila con columnas que representan el escalar 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, genera una o varias filas que representan un valor escalar XQuery que contiene un valor de elemento de lista si la entrada es del tipo de 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 agregación de cadenas sensitivo al orden. Genera una fila con columnas que representan el escalar XQuery que contiene el resultado de fn:data().El operador XQUERY CONTAINS extendido evalúa la función XQuery fn:contains() en la entrada que representa nodos XML. Es un operador de agregación de cadenas sensible al orden. Genera una fila con columnas que representan el escalar XQuery que contiene el resultado de fn:contains()..El operador UPDATE XML NODE extendido actualiza el nodo XML en la extensión para la modificación de datos con reemplazo en XQuery, en el tipo XML, en el método modify(). |
| Ninguno | Unión | El operador Union examina varias entradas, lo que genera cada fila escaneada y quita los duplicados. Union es un operador lógico. |
|
Update |
El Update operador actualiza cada fila de su entrada en el objeto especificado en la Argument columna del plan de ejecución de consultas.
Update es un operador lógico. El operador físico es Table Update, Index Updateo Clustered Index Update. |
|
While |
El While operador implementa el bucle Transact-SQL while.
While es un elemento de lenguaje |
|
Window Spool |
El Window Spool operador expande cada fila en el conjunto de filas que representa la ventana asociada a ella. En una consulta, la cláusula OVER define la ventana dentro de un conjunto de resultados de consulta y una función de ventana calcula un valor para cada fila de la ventana.
Window Spool es un operador lógico y físico. |
de proceso
el
de conjunto de conjunto de claves