Está razoavelmente bem documentado que as UDFs escalares forçam um plano serial geral.
Executando funções em paralelo
Dado um grande número de linhas entrando em um ponto no pipeline onde uma UDF deve ser calculada, por que o mecanismo não pode simplesmente distribuí-las entre os processadores? Se não houver estado em uma UDF, a ordem não importa.
Há reclamações sobre UDF ser uma caixa preta que deve usar o cursor. Posso ver que um cursor de usuário não pode ser paralelizado dentro de um SP para os casos em que algum estado é mantido entre as iterações, mas parece que deveria ser paralelizado de outra forma.
Pontos extras para explicar por que o mecanismo força todo o plano a ser serial em vez de apenas o estágio de cálculo do UDF.
O suporte para UDF paralelo é um recurso razoável a ser solicitado?
Não tenho certeza se tudo está bem documentado.
Consulte Forçando um Plano de Execução Paralela e/ou a apresentação de Execução Paralela de Craig Freedman .
Essas afirmações não são corretas.
Meu entendimento é que as restrições atuais são puramente o resultado de certos detalhes de implementação. Não há razão fundamental para que funções não possam ser executadas usando paralelismo.
Especificamente, as funções escalares do T-SQL são executadas dentro de um contexto separado do T-SQL, o que complica significativamente a operação correta, a coordenação e o desligamento (especialmente no caso de um erro).
Da mesma forma, as variáveis de tabela oferecem suporte a leituras paralelas (mas não a gravações) em geral, mas a variável de tabela exposta por uma função com valor de tabela não é capaz de oferecer suporte a leituras paralelas por motivos específicos da implementação. Você precisaria de alguém com acesso ao código-fonte (e liberdade para compartilhar detalhes) para fornecer uma resposta confiável, receio.
Claro, se você puder fazer um caso forte o suficiente. Minha opinião é que o trabalho envolvido seria extenso, então sua proposta teria que atender a um padrão extremamente alto. Por exemplo, uma solicitação relacionada (e muito mais simples) para fornecer funções escalares embutidas tem grande suporte, mas não foi implementada por anos.
Você pode gostar de ler o artigo da Microsoft:
...que descreve a abordagem que a Microsoft pretende adotar para resolver os problemas de desempenho da função escalar do T-SQL na versão após o SQL Server 2017.
(grifo meu)
As funções T-SQL escalares embutidas agora são implementadas no SQL Server 2019 .
Como Paul mencionou corretamente em sua resposta, não há razão fundamental para que UDFs escalares não possam ser executadas usando paralelismo. No entanto, além dos desafios de implementação, há outro motivo para forçá-los a serem seriais. O artigo da Froid citado por Paul dá mais informações sobre isso.
Citando o artigo (Seção 2.3):
A abordagem do Froid, conforme descrito no artigo, não apenas resultará em planos paralelos, mas também agregará muito mais benefícios para consultas com UDFs. Em essência, ele inclui sua solicitação de execução paralela de UDFs.
[Divulgação: sou co-autor do artigo Froid]