realizando tuning utilizando Window Function

  Fala pessoal, beleza? Hoje gostaria de compartilhar com vocês um tuning que realizei em um cliente aqui na consultoria que trabalho. Esse ficou bem legal e achei que vale a pena compartilhar :)



    Criei aqui um cenário para simularmos o que o cliente queria fazer, ele simplesmente queria pegar a maior venda por produto.


   Eu construir uma query no banco de dados adventuresworks2014, para simular o que ele queria fazer, mas essa query aqui é bem mais simples do que a do cliente.



Após entender o que o cliente queria, eu reescrevi a query, utilizando uma lógica com dense_rank()







Analisando o plano de execução da query original, podemos ver que o SQL acessa a tabela SalesOrderDetail, duas vezes:



Enquanto na reescrita, acessa apenas uma vez:



Já irei mostrar abaixo o resultado no cliente, uma redução de 1h50 para 10s :)





Profiler:




É isso pessoal, se você não souber como utilizar Window Functions, eu tenho uma série aqui no blog :)









Comentários

Postagens mais visitadas deste blog

Tuning no Postgres utlizando View Materializada

Como realizei um tuning que caiu o tempo de execução de 8h para 7minutos!

Procedure que cria um script de insert.