Referencia sobre operadores lógicos y físicos
Los operadores describen cómo SQL Server ejecuta una consulta o una instrucción DML (Lenguaje de manipulación de datos). El optimizador de consultas utiliza operadores para generar un plan de consulta con el fin de crear el resultado especificado en la consulta, o bien para realizar la operación especificada en la instrucción DML. El plan de consulta es un árbol que consta de operadores físicos.
Los operadores se clasifican como lógicos y físicos. Los operadores lógicos describen una operación de procesamiento de consulta relacional a nivel conceptual. Los operadores físicos implementan realmente la operación definida por un operador lógico utilizando un método o algoritmo concreto. Por ejemplo, "combinación" es una operación lógica, mientras que "combinaciones de bucles anidados" es un operador físico.
Operadores lógicos
Los operadores lógicos describen la operación algebraica relacional utilizada 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 uno de los operadores físicos 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 otro tipo de operaciones: el operador Aggregate calcula una expresión que contiene MIN, MAX, SUM, COUNT o AVG, y el operador Merge Join realiza distintos tipos de operaciones lógicas join.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:
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 numerosas llamadas Init(), aunque suele recibir sólo una.
GetNext(): el método GetNext() 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 GetNext().
Close(): el método Close() hace que un operador físico realice algunas operaciones de limpieza y se cierre. Un operador físico recibe únicamente una llamada de Close().
El método GetNext() devuelve una fila de datos y el número de veces que se llame aparece como ActualRows en los resultados del plan de presentación generado mediante SET STATISTICS PROFILE ON o SET STATISTICS XML ON. Para obtener más información acerca de estas opciones SET, vea 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 Init(). A menos que haya un operador en la parte interna de una combinación de bucles, 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 aparecen en los resultados del plan de presentación XML generado mediante SET STATISTICS XML ON. Sólo se rellenan para los operadores Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool y 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). Tenga en cuenta que si no aparecen, los resultados reales del plan de presentación gráfico muestran ceros para los reenlaces y rebobinados reales. Para obtener más información acerca de los planes de presentación gráficos, vea Mostrar planes de ejecución gráficos (SQL Server Management Studio).
Hay un contador relacionado disponible, ActualEndOfScans, únicamente cuando se generan los resultados del plan de presentación mediante SET STATISTICS XML ON. Siempre que un operador físico alcanza el final de su secuencia de datos, este contador se incrementa en uno. Un operador físico puede alcanzar el final de su secuencia de datos cero, una o varias veces. Al igual que los reenlaces y rebobinados, el número 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 número de finales de recorrido debería ser inferior o igual a la suma del número de reenlaces y rebobinados.
Los operadores físicos se corresponden con algoritmos de ejecución. Por ejemplo, son operadores físicos: exploración o búsqueda en índices, combinación de bucles anidados, combinación de mezcla, agregación o combinación hash, agregación de secuencias. Los operadores físicos tienen costos asociados. Cada paso de la ejecución de una consulta o instrucción DML implica un operador físico.
Asignar operadores físicos y lógicos
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 costo para determinar el operador físico que implementará 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.
En esta sección
Esta sección describe los siguientes operadores lógicos y físicos:
|