KB3189813: la actualización introduce el argumento de sugerencia de consulta USE USE en SQL Server 2016

Se aplica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

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:

  • TOP
  • OPTION (FAST N)
  • IN
  • EXISTS
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.