Estou ajustando um SP e reescrevendo-o para otimizar. Agora estou comparando o código antigo e o novo código em termos de tempo usando "definir tempo de estatísticas para ligar/desligar".
Ao desativar as estatísticas de tempo, meu novo código está funcionando bem, pelo menos 4 vezes melhor que o código antigo (o código antigo leva 4 segundos e o novo código leva 1 segundo para ser executado), mas quando estou definindo as estatísticas de tempo, meu novo código está demorando aproximadamente 12 segundos e o código antigo está demorando cerca de 7 segundos.
Por que o novo código está funcionando mal depois de ativar as estatísticas de tempo? Parece que também há algum custo de estatísticas de tempo e no meu novo código, esse custo é muito maior em comparação com o código antigo. Estou certo? Se sim, o que é isso?
Se houver funções definidas pelo usuário em seu código, pode haver uma sobrecarga significativa para definir
STATISTICS TIME ON
. Veja aqui .Mais importante, tenha MUITO cuidado ao usar UDFs escalares. Eles inibirão o paralelismo de sua consulta e terão o péssimo hábito de executar uma vez por linha retornada por sua consulta.
O impacto que eles têm sobre
STATISTICS TIME
deve ser a menor das suas preocupações.