¿Puede una UDF con valores de tabla en línea superar a la UDF escalar equivalente en una lista de columnas SELECT?

Esta pregunta surgió deSQLServer: ¿Por qué evitar las funciones definidas por el usuario con valores de tabla?. Comencé a hacer preguntas en algunos de los comentarios, y las respuestas a mis comentarios se apartaron del tema.

Para no tener que leer toda la discusión: nunca había oído decir que las funciones definidas por el usuario (UDF) eran lentas o que debían evitarse. Algunos enlaces se publicaron en la pregunta mencionada anteriormente para ilustrar que eran lentos. Todavía no lo entendí, y pedí un ejemplo. Se publicó un ejemplo, y la diferencia de rendimiento fue enorme.

No puedo ser la única persona que no se dio cuenta de que podría haber una gran diferencia de rendimiento. Sentí que este hecho debería ser separado en una nueva pregunta y respuesta, para mejorar sus posibilidades de ser encontrado. Esta es la "pregunta". Por favor, no cierre todavía, ya que me gustaría darle tiempo al contestador para que publique la respuesta.

Por supuesto, otros también deben publicar respuestas o ejemplos, también. Apreciaría especialmente cualquier cosa que me ayude a entender.por qué La diferencia de rendimiento es tan grande.

Tenga en cuenta también que no estoy hablando sobre el uso de un UDF en una cláusula WHERE. Soy consciente de cómo esto puede evitar que el optimizador haga su trabajo. Me interesan específicamente las diferencias en el rendimiento cuando el UDF original formaba parte de la lista de la columna SELECT.

Respuestas a la pregunta(2)

Su respuesta a la pregunta