Resumen
Esta actualización presenta un nuevo argumento de sugerencia de consulta, USE HINT, que le permite controlar el optimizador de consultas sin credenciales elevadas o sin ser miembro del rol del servidor sysadmin. La sintaxis de esta nueva sugerencia de consulta es similar a la siguiente:
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Esta actualización también presenta las siguientes opciones de sugerencia que se pueden usar con el argumento USE HINT.
| Opción | Marca de seguimiento equivalente | Descripción | La información de este artículo se refiere a: |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Hace que SQL Server genere un plan de consulta utilizando la suposición de contención simple en lugar de la suposición de contención base predeterminada para las combinaciones, en el modelo de estimación de cardinalidad del optimizador de consultas de SQL Server 2014 (12.x) o posterior. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Hace que SQL Server genere un plan con selectividad mínima al estimar los predicados Y de los filtros para tener en cuenta la correlación. Este nombre de sugerencia es paralelo a la marca de seguimiento 4137 cuando se utiliza con el modelo de estimación de cardinalidad de SQL Server 2012 (11.x) y versiones anteriores, y tiene un efecto similar cuando se utiliza la marca de seguimiento 9471 con el modelo de estimación de cardinalidad de SQL Server 2014 (12.x) o superior. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Deshabilita las combinaciones adaptables del modo por lotes. | a partir de SQL Server 2017 | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Deshabilita los comentarios de concesión de memoria en modo por lotes. | a partir de SQL Server 2017 | |
| DISABLE_DEFERRED_COMPILATION_TV | Deshabilita la compilación diferida de variables de tabla. | a partir de SQL Server 2019 | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Deshabilita la ejecución intercalada de las funciones de tabla con valores de varias instrucciones. | a partir de SQL Server 2017 | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Indica al procesador de consultas que no use una operación de ordenación (ordenación por lotes) para combinaciones de bucles anidados optimizadas al generar un plan de consulta. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Hace que SQL Server genere un plan que no usa modificaciones de objetivos de fila con consultas que contienen estas palabras clave:
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Indica al optimizador de consultas que use la distribución media de datos al compilar una consulta con uno o varios parámetros. Esta instrucción hace que el plan de consulta sea independiente del valor del parámetro que se usó por primera vez cuando se compiló la consulta. Use esta sugerencia para invalidar la configuración de ámbito de base de datos PARAMETER_SNIFFING=OFF. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Deshabilita la memoria del modo de filas, conceda comentarios. | a partir de SQL Server 2019 | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Deshabilita la inserción escalar de UDF. | a partir de SQL Server 2019 | |
| DISALLOW_BATCH_MODE | Deshabilita la ejecución en modo por lotes. | a partir de SQL Server 2019 | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Habilita las estadísticas rápidas generadas automáticamente (modificación del histograma) para cualquier columna de índice inicial para la que se necesite una estimación de cardinalidad. El histograma usado para estimar la cardinalidad se ajustará en el momento de la compilación de la consulta para tener en cuenta el valor máximo o mínimo real de esta columna. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Habilita las revisiones del optimizador de consultas (cambios publicados en las Novedades acumulativas y Service Packs de SQL Server). Use esta sugerencia para invalidar la configuración de ámbito de base de datos QUERY_OPTIMIZER_HOTFIXES=ON. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Obliga al optimizador de consultas a utilizar el modelo de estimación de cardinalidad que corresponde al nivel de compatibilidad de la base de datos actual. Use esta sugerencia para invalidar la configuración de ámbito de base de datos LEGACY_CARDINALITY_ESTIMATION=ON. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Obliga al optimizador de consultas a utilizar el modelo de estimación de cardinalidad de SQL Server 2012 (11.x) y versiones anteriores. Use esta sugerencia para invalidar la configuración de ámbito de base de datos LEGACY_CARDINALITY_ESTIMATION=ON. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Fuerza el comportamiento del optimizador de consultas en un nivel de consulta. Este comportamiento se produce como si la consulta se compilara con el nivel de compatibilidad de base de datos n, donde n es un nivel de compatibilidad de base de datos admitido. Consulte sys.dm_exec_valid_use_hints para obtener una lista de los valores admitidos actualmente para n. | a partir de SQL Server 2017 (14.x) CU10 |
Para obtener más información, consulte Sugerencias (Transact-SQL) - Consulta.
Más información
Esta actualización se incluye en el Service Pack 1 para SQL Server 2016.
Acerca de las compilaciones de SQL Server 2016
Cada compilación nueva para SQL Server 2016 contiene todas las revisiones y correcciones de seguridad que se incluyeron con la compilación anterior. Se recomienda instalar la compilación más reciente para SQL Server 2016.
Los escenarios en los que se debe sugerir el comportamiento del optimizador de consultas (QO) de SQL Server son bastante comunes y, tradicionalmente, se abordan mediante el uso de varias marcas de seguimiento (documentadas y no documentadas). Sin embargo, cuando los indicadores de seguimiento se establecen globalmente, pueden tener un efecto adverso en otras cargas de trabajo. Además, habilitarlos por sesión no es práctico con las aplicaciones existentes, y habilitarlos por consulta con OPTION QUERYTRACEON requiere la pertenencia al rol fijo de servidor sysadmin. (Aunque puede solucionar este comportamiento mediante una guía de plan o un procedimiento almacenado, aún se requieren credenciales elevadas).
Los indicadores de seguimiento se usan para establecer temporalmente características específicas del servidor o para desactivar un comportamiento concreto. Pueden ser difíciles de administrar y comprender.
Para obtener información acerca de las marcas de seguimiento, consulte el tema Marcas de seguimiento (Transact-SQL) en el sitio web de Microsoft Developer Network (MSDN).
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.