Una guía completa sobre las funcionalidades avanzadas de optimización de consultas en SQL Server
Intelligent Query Processing (IQP) es un conjunto de funcionalidades avanzadas en SQL Server pensadas para potenciar el rendimiento de consultas, OLTP y OLAP, sin necesidad de cambiar el código. Introducido en SQL Server 2017 y ampliado en cada versión hasta SQL Server 2022, IQP transforma el motor de optimización tradicional incorporando mecanismos de feedback, machine learning y ajustes automáticos que reducen la necesidad de tuning manual.
Recomendación principal: Para aprovechar IQP al máximo y automáticamente, activa el nivel de compatibilidad más alto soportado por tu versión de SQL Server y habilita Query Store.
IQP es el gran salto de SQL Server de la optimización estática a la optimización dinámica y adaptativa. Desde 2017, incluye features que actúan en tiempo real, aprendiendo de ejecuciones previas, ajustando planes, memoria, paralelismo y más, incluso corrigiendo problemas clásicos como "bad plans", subestimación de filas, o problemas de parameter sniffing. Su objetivo es: más rendimiento, menos tuning manual y menos regresiones después de actualizaciones.
Aspecto | Procesamiento Clásico | Intelligent Query Processing |
---|---|---|
Optimización | Antes de ejecutar | Se ajusta en ejecución y posteriores |
Corrección de regresiones | Manual | Automática con feedback |
Afinación de rendimiento | Requiere DBA | Casi sin cambiar código |
Feedback/Aprendizaje | No | Sí (machine learning/feedback) |
Descarga la tabla completa de características IQP por versión en español para referencia y clases:
También tienes disponible una versión práctica en CSV para importación.
Evolución de Intelligent Query Processing por versión de SQL Server y agrupación de features principales.
ALTER DATABASE [TuBaseDeDatos] SET COMPATIBILITY_LEVEL = 160; -- (2022)
-- O usa 150 para 2019, 140 para 2017, según versión instalada
-- Habilita Query Store (recomendado)
ALTER DATABASE [TuBaseDeDatos] SET QUERY_STORE = ON;
Consulta y aplica niveles con:
SELECT name, compatibility_level FROM sys.databases;
(Todos los comandos y ejemplos descargables completos en:)
Un ejemplo:
-- Deshabilitar Batch Mode on Rowstore solo para pruebas
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF;
Todos los ejemplos con comentarios didácticos y ready-for-lab los tienes en:
Incluye laboratorio para probar:
Característica | 2017 | 2019 | 2022 |
---|---|---|---|
Adaptive Joins | ✔ | ✔ | ✔ |
Memory Grant Feedback | ✔* | ✔* | ✔** |
Interleaved Execution MSTVF | ✔ | ✔ | ✔ |
Table Variable Deferred Compilation | ✔ | ✔ | |
Scalar UDF Inlining | ✔ | ✔ | |
Batch Mode on Rowstore | ✔ | ✔ | |
Approximate Query Processing | ✔ | ✔ | |
Parameter Sensitive Plan Optimization | ✔ | ||
Cardinality Estimation Feedback | ✔ | ||
DOP Feedback | ✔ | ||
Optimized Plan Forcing, QStore Hints | ✔ |
*: batch mode --- **: algoritmos mejorados, persistencia Query Store
Descarga el diagrama listo para mermaid:
Infografía explicativa sobre la arquitectura y funcionamiento de Intelligent Query Processing en SQL Server, con leyendas en español.
Artículo educativo y laboratorio ideal para DBA, desarrolladores y docentes técnicos de SQL Server. Puede citarse, descargarse y usarse en cursos o blogs técnicos.