fbpx

Casos do dia a dia – uma query real que saiu de 9 horas para 47 segundos

Casos do dia a dia – uma query real que saiu de 9 horas para 47 segundos

No caso de hoje vamos falar sobre um caso que atuamos num cliente que tinha um job que chamava uma SP e o tempo médio de execução era de 9h30min.

Dentro dessa SP executava basicamente uma query como a abaixo:

Era uma subquery que ia via linked server buscar os dados para serem agrupados e depois retornados. Essa subquery retornava mais ou menos 500k linhas via linked server. Enquanto o group by retornava menos de 10 linhas. Além dessa quantidade de dados sendo trafegados via linkedserver era utilizado uma função scalar na subquery que formatava um campo para data.

A solução para esse caso foi reescrever a query, onde ao invés de executar a query via linked server eu o faço via openquery, que irá abrir uma conexão e executar a query toda no servidor destino e trafegar os dados após o group by, fazendo assim com que muito menos dados fossem trafegados, pois o retorno do group by será de menos de 10 linhas.

E a outra alteração foi usar a função apenas no select final, onde o resultado é muito menor devido ao group by.

Após a reescrita o job passou a rodar em 47s.

Deixe uma resposta