sql >> Base de Datos >  >> RDS >> Sqlserver

Función con valores de tabla que elimina el rendimiento de mi consulta

Devolver una variable de tabla la convertirá en una función con valores de tabla de varias declaraciones y puede ser malo para el rendimiento debido al hecho de que se trata como una tabla, excepto que no hay estadísticas disponibles para que SQL Server se base en un buen plan de ejecución, por lo que estimará que la función devuelve una cantidad muy pequeña de filas. Si devuelve una mayor cantidad de filas, entonces el plan generado podría ser mucho menos que óptimo.

Mientras que devolver solo un SELECT lo convierte en una función con valores de tabla en línea Piense en ello más como una vista. En este caso, las tablas subyacentes reales se incorporan a la consulta principal y se puede generar un mejor plan de ejecución en función de las estadísticas adecuadas. Notará que, en este caso, el plan de ejecución NO mencionará la función en absoluto, ya que básicamente fusionó la función con la consulta principal.

Hay una gran referencia al respecto en MSDN por Ingenieros de CSS SQL Server incluyendo (cita):