Planes de ejecuciónExecution Plans

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Para poder ejecutar consultas, el Motor de base de datos de SQL ServerSQL Server Database Engine debe analizar la instrucción para determinar la manera más eficaz para tener acceso a los datos necesarios.To be able to execute queries, the Motor de base de datos de SQL ServerSQL Server Database Engine must analyze the statement to determine the most efficient way to access the required data. Este análisis se controla mediante un componente denominado Optimizador de consultas.This analysis is handled by a component called the Query Optimizer. La entrada al Optimizador de consultas consta de la consulta, el esquema de la base de datos (definiciones de tabla e índice) y las estadísticas de base de datos.The input to the Query Optimizer consists of the query, the database schema (table and index definitions), and the database statistics. La salida del Optimizador de consultas es un plan de ejecución de consultas, en ocasiones denominado plan de consulta o simplemente plan de ejecución.The output of the Query Optimizer is a query execution plan, sometimes referred to as a query plan, or execution plan.

Un plan de ejecución de consulta es una definición de los siguientes elementos:A query execution plan is a definition of the following:

  • La secuencia en la que se tiene acceso a las tablas de origen.The sequence in which the source tables are accessed.
    Normalmente, hay muchas secuencias diferentes en las que el servidor de la base de datos puede tener acceso a las tablas base para generar el conjunto de resultados.Typically, there are many sequences in which the database server can access the base tables to build the result set. Por ejemplo, si una instrucción SELECT hace referencia a tres tablas, el servidor de la base de datos podría tener acceso primero a TableA, utilizar los datos de TableA para extraer las filas que coincidan con las de TableBy, finalmente, utilizar los datos de TableB para extraer datos de TableC.For example, if a SELECT statement references three tables, the database server could first access TableA, use the data from TableA to extract matching rows from TableB, and then use the data from TableB to extract data from TableC. Las demás secuencias en las que el servidor de base de datos podría tener acceso a las tablas son:The other sequences in which the database server could access the tables are:
    TableC, TableB, TableAoTableC, TableB, TableA, or
    TableB, TableA, TableCoTableB, TableA, TableC, or
    TableB, TableC, TableAoTableB, TableC, TableA, or
    TableC, TableA, TableBTableC, TableA, TableB

  • Los métodos que se usan para extraer los datos de cada tabla.The methods used to extract data from each table.
    Por lo general, hay métodos diferentes para tener acceso a los datos de cada tabla.Generally, there are different methods for accessing the data in each table. Si solo se necesitan unas cuantas filas con valores de clave específicos, el servidor de la base de datos puede utilizar un índice.If only a few rows with specific key values are required, the database server can use an index. Si se necesitan todas las filas de una tabla, el servidor de la base de datos puede omitir los índices y realizar un recorrido de la tabla.If all the rows in the table are required, the database server can ignore the indexes and perform a table scan. Si se necesitan todas las filas de la tabla, pero hay un índice cuyas columnas de clave están ordenadas con ORDER BY, realizar un recorrido del índice en lugar de un recorrido de la tabla puede evitar otra ordenación del conjunto de resultados.If all the rows in a table are required but there is an index whose key columns are in an ORDER BY, performing an index scan instead of a table scan may save a separate sort of the result set. Si la tabla es muy pequeña, el recorrido de la misma puede ser el método más eficaz para la mayoría de los accesos a la tabla.If a table is very small, table scans may be the most efficient method for almost all access to the table.

  • Los métodos que se usan para realizar cálculos, y cómo filtrar, agregar y ordenar los datos de cada tabla.The methods used to compute calculations, and how to filter, aggregate, and sort data from each table.
    A medida que se tiene acceso a los datos desde las tablas, existen distintos métodos para realizar cálculos sobre ellos (por ejemplo, calcular valores escalares), para agregarlos y ordenarlos tal como se define en el texto de la consulta, por ejemplo, cuando se usa una cláusula GROUP BY o ORDER BY, y cómo filtrarlos, por ejemplo, cuando se usa una cláusula WHERE o HAVING.As data is accessed from tables, there are different methods to perform calculations over data such as computing scalar values, and to aggregate and sort data as defined in the query text, for example when using a GROUP BY or ORDER BY clause, and how to filter data, for example when using a WHERE or HAVING clause.

Nota

SQL Server Management StudioSQL Server Management Studio tiene tres opciones para mostrar los planes de ejecución:has three options to display execution plans:

  • El plan de ejecución estimado es el plan compilado, generado por el optimizador de consultas en función de las estimaciones.The Estimated Execution Plan is the compiled plan, as produced by the Query Optimizer based on estimations. Este es el plan de consulta que se almacena en la caché de planes.This is the query plan that is stored in the plan cache.
  • El * plan de ejecución real _ es el plan compilado más su contexto de ejecución.The *Actual Execution Plan _ is the compiled plan plus its execution context. Estará disponible _*una vez finalizada la ejecución de la consulta**.It becomes available _*after the query execution has completed**. Esto incluye la información del entorno de ejecución real, como advertencias de ejecución o, en versiones más recientes del Motor de base de datosDatabase Engine, el tiempo transcurrido y el tiempo de CPU usado durante la ejecución.This includes actual runtime information such as execution warnings, or in newer versions of the Motor de base de datosDatabase Engine, the elapsed and CPU time used during execution.
  • Las * estadísticas de consulta activa _ son el plan compilado más su contexto de ejecución.The *Live Query Statistics _ is the compiled plan plus its execution context. Está disponible para _ejecuciones de consultas en curso* y se actualiza cada segundo.It is available for _*in-flight query executions**, and updated every second. Esto incluye información del entorno de ejecución, como el número real de filas que fluyen a través de los operadores, el tiempo transcurrido y el progreso estimado de la consulta.This includes runtime information such as the actual number of rows flowing through the operators, elapsed time, and the estimated query progress.

Sugerencia

Para más información sobre el procesamiento de consultas y los planes de ejecución de consultas, consulte las secciones Optimización de las instrucciones SELECT y Almacenar en caché y volver a utilizar un plan de ejecución de la Guía de arquitectura de procesamiento de consultas.For more information on query processing and query execution plans, see the sections Optimizing SELECT statements and Execution Plan Caching and Reuse of the Query Processing Architecture Guide.

En esta secciónIn This Section

Infraestructura de generación de perfiles de consultas Query Profiling Infrastructure
Mostrar y guardar planes de ejecución Display and Save Execution Plans
Comparación y análisis de los planes de ejecución Compare and Analyze Execution Plans
Guías de planPlan Guides

Consulte tambiénSee Also

Supervisión y optimización del rendimiento Monitor and Tune for Performance
Herramientas de supervisión y optimización del rendimiento Performance Monitoring and Tuning Tools
Query Processing Architecture Guide (Guía de arquitectura de procesamiento de consultas)Query Processing Architecture Guide
Estadísticas de consultas activas Live Query Statistics
Monitor de actividad Activity Monitor
Supervisión del rendimiento mediante el almacén de consultas Monitoring Performance by Using the Query Store
sys.dm_exec_query_statistics_xml sys.dm_exec_query_statistics_xml
sys.dm_exec_query_profiles sys.dm_exec_query_profiles
Marcas de seguimiento Trace flags
Referencia de operadores lógicos y físicos del plan de presentaciónShowplan Logical and Physical Operators Reference