¿Por qué el plan de ejecución incluye una llamada a la función definida por el usuario para una columna calculada que persiste?

Tengo una tabla con 2 columnas calculadas, las cuales tienen "Is Persisted" establecido enciert. Sin embargo, cuando se usan en una consulta, el Plan de ejecución muestra el UDF utilizado para calcular las columnas como parte del plan. Dado que el UDF calcula los datos de la columna cuando se agrega / actualiza la fila, ¿por qué el plan la incluiría?

La consulta es increíblemente lenta (> 30 s) cuando estas columnas se incluyen en la consulta, y muy rápida (<1 s) cuando se excluyen. Esto me lleva a concluir que la consulta en realidad está calculando los valores de columna en tiempo de ejecución, lo cual no debería ser el caso, ya que están configurados para persistir.

¿Me estoy perdiendo de algo

UPDATE: Aquí hay un poco más de información sobre nuestro razonamiento para usar la columna calculada.

Somos una empresa deportiva y tenemos un cliente que almacena los nombres completos de los jugadores en una sola columna. Nos exigen que les permitamos buscar datos de jugadores por nombre y / o apellido por separado. Afortunadamente, usan un formato consistente para los nombres de los jugadores: Apellido, Nombre (Apodo), por lo que analizarlos es relativamente fácil. Creé un UDF que llama a una función CLR para analizar las partes del nombre usando una expresión regular. Obviamente, llamar al UDF, que a su vez llama a una función CLR, es muy costoso. Pero como solo se usa en una persistió columna pensé que solo se usaría durante las pocas veces al día que importamos datos a la base de datos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta