Melhoria total: 2307x mais rápido!
Problema: a procedure leva 38 segundos para ser executada. Ela atinge o tempo limite no front-end do aplicativo. Ela estava realizando várias varreduras e lendo muitos dados.
Solução: a procedure foi reescrita. Além disso, adicionado um segundo select com UNION ALL, isso foi necessário para dividir a seletividade da cláusula WHERE.
Outras notas: O conjunto de resultados para ambas as versões da procedure é o mesmo. No entanto, a ordem das linhas é diferente, portanto, antes de colocar essa alteração em produção é necessário certifique-se que para o aplicativo não importa a forma como os dados são recebidos (suspeitamos que isso não importa), pois o aplicativo classifica o conjunto de resultados de qualquer maneira.
É simples. Quanto menos você acessar o disco; mais capacidade de disco sobra.
Funciona como uma rodovia.
Digamos que você tenha uma rodovia de 3 pistas e 5 carros passam a cada 1min.
E se você adicionar 50 carros? A velocidade ainda é a mesma, porque 55 carros não sobrecarregam aquela rodovia.
Mas, se você adicionar outros 500 ou 5000? Agora você está começando uma sobrecarga na rodovia gerando uma desaceleração no tráfego.
Todos eles ainda voltam para casa, mas não mais na mesma velocidade com 5 ou 50 carros.
O mesmo ocorre com servidores SQL.
É por isso que o ajuste de velocidade dos recursos mais críticos é essencial. Quanto menos acessos houver no armazenamento, mais capacidade haverá disponível e mais carros podermos colocar nele no futuro.
Estudo de caso - 103x mais rápido!
Velocidade
1.143% de melhoria
CPU
883% de melhoria
DISCO
8.266% de melhoria
2307x mais rápido
Velocidade
3.800% de melhoria
CPU
7.970% de melhoria
DISCO
218.941% de melhoria
Resultados estudo ambiente SQL Server
Velocidade
1.190% de melhoria
CPU
221% de melhoria
DISCO
125% de melhoria