Lo que tiene es un UDF escalar (toma de 0 a n parámetros y devuelve un valor escalar). Dichos UDF generalmente provocan una operación de fila por fila de su consulta, a menos que se llame con parámetros constantes, con exactamente el tipo de degradación del rendimiento que está experimentando con su consulta.
Consulte aquí , aquí y aquí para obtener explicaciones detalladas de los problemas de rendimiento del uso de UDF.