Resumen
Agregue el nuevo atributo del plan de ejecución de consultas EstimateRowsWithoutRowGoal a SQL Server 2017 Cumulative Update 3 (CU3) y Microsoft SQL Server 2016 Service Pack 2 (SP2).
Cuando el optimizador de consultas calcula el costo de un plan de ejecución de consulta, normalmente se supone que todas las filas que cumplen los requisitos de todos los orígenes tienen que procesarse. Sin embargo, algunas consultas hacen que el optimizador de consultas busque un plan que devuelva un número menor de filas más rápido. Esto puede ocurrir si la consulta usa una cláusula TOP , FAST number_rows sugerencia de consulta, una cláusula IN o EXISTS o una instrucción SET ROWCOUNT { number | @number\_var } . En este caso, el optimizador usa un objetivo de fila cuando calcula el plan de consulta. Si se aplica el plan de objetivo de fila, el número estimado de filas en el plan de ejecución de la consulta se reduce. Esto se debe a que el plan supone que tendrá que procesarse un número menor de filas para alcanzar el objetivo de fila.
Nota El presupuesto que se realiza usando el objetivo de fila es aproximado. Si la distribución de datos real no es uniforme, puede ser menor que el número real de filas que hay que procesar. Por lo tanto, podría crear un plan de consulta ineficiente. Como solución alternativa para este problema, puede usar la opción de consulta USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') o Trace Flag 4138.
Para obtener más información, vea Actualizar presenta el argumento de sugerencia de consulta USE HINT en SQL Server 2016. Sin embargo, puede resultar difícil identificar en consultas complejas si se aplica un objetivo de fila y cuánto afecta a la elección del plan.
Mediante el atributo EstimateRowsWithoutRowGoal , puede comparar los resultados con los del atributo EstimateRows para ver cuánto afecta el objetivo de fila a las estimaciones del optimizador de consultas.
Nota Si objetivo de fila no se aplica a un operador de plan de consulta determinado, este atributo no se incluye.
Más información
Esta actualización se incluye en la siguiente actualización acumulativa para SQL Server:
Actualización acumulativa 3 para SQL Server 2017
Acerca de las actualizaciones acumulativas para SQL Server:
Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Echa un vistazo a las últimas actualizaciones acumulativas de SQL Server:
Actualización acumulativa más reciente de SQL Server 2017
Información del Service Pack para SQL Server
Esta actualización se introduce en los siguientes Service Pack para SQL Server:
Service Pack 2 para SQL Server 2016
Service Pack 3 para SQL Server 2014
Acerca de los Service Pack para SQL Server:
Los Service Packs son acumulativos. Cada Service Pack nuevo contiene todas las revisiones que se incluyen en los anteriores, además de otras nuevas. Nuestra recomendación es aplicar el Service Pack más reciente y la actualización acumulativa más reciente para ese Service Pack. No necesita instalar un Service Pack anterior antes de instalar el más reciente. Use la Tabla 1 del artículo siguiente para obtener más información sobre el Service Pack más reciente y la actualización acumulativa más reciente.
Cómo determinar el nivel de versión, edición y actualización de SQL Server y sus componentes
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.