Información general sobre el plan de ejecución
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Para poder ejecutar consultas, el motor de base de datos de SQL Server debe analizar la instrucción para determinar una manera eficaz de acceder a los datos necesarios y procesarlos. Este análisis se controla mediante un componente denominado Optimizador de consultas. 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. El optimizador de consultas compila uno o varios planes de ejecución de consultas, a veces denominados planes de consulta o planes de ejecución. El optimizador de consultas elige un plan de consulta mediante un conjunto de heurística para equilibrar el tiempo de compilación y la optimización del plan para encontrar un buen plan de consulta.
Sugerencia
Para obtener más información sobre el procesamiento de consultas y los planes de ejecución de consultas, consulte las secciones Optimización de instrucciones SELECT y Almacenamiento en caché y reutilización del plan de ejecución de la guía de arquitectura de procesamiento de consultas.
Para obtener información sobre cómo ver los planes de ejecución en SQL Server Management Studio y Azure Data Studio, consulte Mostrar y guardar planes de ejecución.
Un plan de ejecución de consultas es la definición de:
La secuencia en la que se tiene acceso a las tablas de origen.
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. Por ejemplo, si una instrucción
SELECT
hace referencia a tres tablas, el servidor de la base de datos podría tener acceso primero aTableA
, utilizar los datos deTableA
para extraer las filas que coincidan con las deTableB
y, finalmente, utilizar los datos deTableB
para extraer datos deTableC
. Las demás secuencias en las que el servidor de base de datos podría tener acceso a las tablas son:
TableC
,TableB
,TableA
o
TableB
,TableA
,TableC
o
TableB
,TableC
,TableA
o
TableC
,TableA
,TableB
Los métodos que se usan para extraer los datos de cada tabla.
Por lo general, hay métodos diferentes para tener acceso a los datos de cada tabla. Si solo se necesitan unas cuantas filas con valores de clave específicos, el servidor de la base de datos puede utilizar un índice. 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. Si se requieren todas las filas de una tabla, pero hay un índice cuyas columnas de clave se encuentran en
ORDER BY
, realizar un análisis de índice en lugar de un recorrido de tabla podría guardar un conjunto de resultados independiente. Si la tabla es pequeña, el recorrido puede ser el método más eficaz para la mayoría de los accesos a la tabla.Los métodos que se usan para realizar cálculos, y cómo filtrar, agregar y ordenar los datos de cada tabla.
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
oORDER BY
, y cómo filtrarlos, por ejemplo, cuando se usa una cláusulaWHERE
oHAVING
.
Contenido relacionado
- Supervisión y optimización del rendimiento
- Herramientas de supervisión y optimización del rendimiento
- Guía de arquitectura de procesamiento de consultas
- Estadísticas de consultas activas
- Monitor de actividad
- Supervisión del rendimiento mediante el Almacén de consultas
- sys.dm_exec_query_statistics_xml
- sys.dm_exec_query_profiles
- DBCC TRACEON: marcas de seguimiento (Transact-SQL)
- Referencia de operadores lógicos y físicos del plan de presentación
- Query Profiling Infrastructure (Infraestructura de generación de perfiles de consultas)
- Mostrar y guardar planes de ejecución
- Comparación y análisis de los planes de ejecución
- Guías de plan