Apesar da consulta do Alberto fazer mais leituras de páginas que a minha solução, o tempo foi menor e isso é o que importa.
Eu gostaria muito de saber qual o tempo da minha consulta e da consulta do Alberto na sua máquina, pode testar e postar o resultado em um comentário aqui no blog?
É isso ai galera, espero que tenham gostado… e fiquem de olho que já tenho outro desafio de performance pronto para ser publicado 🙂
A operação de Sort gerada no plano de execução da Query na qual voce tentou gerar em uma linha, não me parece um BUG.
uma vez que o Optimizer não tem como garantir que depois das operações de ordenação “diferentes” nas colunas do CTE e
A questão de eliminar o “Sort” ou não, me parece mais uma questão de custo/beneficio para garantir (de alguma forma) a ordenação dos dados retornados dos Spools do que um BUG..
Mas o custo/benefico de tal implementação nem eu ou voce vai conseguir discutir ou saber, isso é para o pessoal de DEV do SQL Server Query Optimizer.
E concordo com Andrew Richardson quando disse pode ser retirado reescrevendo a query de uma maneira diferente e obter um resultado melhor.
A prova disso é que depois que retirei o AVG da geração do CTE e atribui ao select do CTE, o plano execução passou a ser feito em uma linha, como voce esperava e sem o Sort.
Obrigado pelo comentario Alberto… eu estou de ferias por isso vou ser breve, sem entrar no merito do bug ou melhoria … mas vamos voltar a falar sobre isso com certeza
Sobre a sua query… vc nao pode colocar o avg na query pq o resultado nao sera o mesmo… o avg deve ser por customerid e nao por customerid + countcol …
Pelo que vi, a solução do desafio é possível apenas se a edição do SQL Server for a Enterprise, pois o recurso de