Suponha que você tenha uma função com valor de tabela com múltiplas instruções que faça uso intenso de variáveis de tabela. Que métodos existem para otimizá-los? Só sei o seguinte e todos me decepcionam.
- Converta as variáveis de tabela em variáveis de tabela com otimização de memória e reze para que isso faça uma grande diferença. Dado que eles não têm estatísticas, provavelmente não terá.
- Jogue
OPTION(RECOMPILE)
em todos os lugares e espere pelo melhor. Isso lhe dará melhores estimativas de cardinalidade, mas essas não são soluções mágicas. - Truque: Remova as variáveis da tabela, converta a função em uma função embutida com valor de tabela e espere pelo melhor.
- Truque: Converta as variáveis da tabela em tabelas temporárias, converta a função em um procedimento armazenado e reze para que a mudança de interface não seja um problema.
Suponha que o SQL Server 2019, pois acho que foi a última vez que o desempenho de qualquer coisa mencionada nesta questão melhorou.