Resumen
Agregue el nuevo atributo de plan de ejecución de la consulta EstimateRowsWithoutRowGoal a la actualización acumulativa 3 (CU3) de sql server 2017 y al Service Pack 2 (SP2) de Microsoft sql server 2016.
Cuando el optimizador de consultas estima el costo de un plan de ejecución de consultas, generalmente se supone que todas las filas calificadas de todas las fuentes deben 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 exist o una instrucción set RowCount {Number | @number_var} . En este caso, el optimizador está usando un objetivo de fila al estimar el plan de consulta. Si se aplica el plan de objetivos de la fila, se reduce el número estimado de filas en el plan de ejecución de la consulta. Esto se debe a que el plan supone que se debe procesar un número menor de filas para alcanzar el objetivo de la fila.
Nota La estimación que se realiza con el objetivo de fila es aproximada. Si la distribución de datos real no es uniforme, puede ser menor que el número real de filas que se deben procesar. Por lo tanto, podría crear un plan de consulta ineficaz. Como solución para este problema, puede usar la opción de consulta usar sugerencia (' DISABLE_OPTIMIZER_ROWGOAL ') o la marca de seguimiento 4138.
Para obtener más información, vea actualizar el argumento de sugerencia de consulta de uso de sugerencias 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 opción de plan.
Al usar el atributo EstimateRowsWithoutRowGoal , puede comparar los resultados con los del atributo EstimateRows para ver el grado en que el objetivo de fila afecta a las estimaciones del optimizador de consultas.
Nota Si no se aplica el objetivo de fila 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 de SQL Server:
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Información de Service Pack para SQL Server
Esta actualización se presenta en los siguientes Service Packs para SQL Server:
Los Service Pack son acumulativos. Cada nuevo Service Pack contiene todas las revisiones de Service Packs previos junto con revisiones nuevas. Nuestra recomendación es aplicar el último Service Pack y la actualización acumulativa más reciente para ese Service Pack. No es necesario instalar un Service Pack anterior antes de instalar el Service Pack 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 última actualización acumulativa.
Cómo determinar el nivel de versión, edición y actualización de SQL Server y sus componentes
Referencias
Obtenga más información sobre la terminologíaque Microsoft usa para describir las actualizaciones de software.