none
Execução de procedure demorada RRS feed

  • Pergunta

  • Boa tarde Galera,

    Estou com o seguinte problema:

    Hoje chegou uma proc com 15 UNION que demorava para executar 7 minutos, fiz algumas alterações e passou a executar em 30 segundos, no entanto, se eu executar a query fora da procedure o tempo é de apenas 6 segundos, alguém consegue me dizer o que ocorre?

    Obrigado.

    Edgar.



    • Editado Edgar Toia quinta-feira, 18 de fevereiro de 2016 19:07
    quinta-feira, 18 de fevereiro de 2016 19:06

Respostas

Todas as Respostas

  • Edgar,

    Eu tive um problema semelhante a este porem era o seguinte, quando eu executava uma query na aplicação ela ficava lenta, porem quando eu executava ela no management studio ela executava rápido, descobri que o problema é na aplicação quando ela era executada com o componente sp_executesql o SQL Server estava gerando um plano de execução diferente.

    Transformei a query em um SP e passei a chamar a execução dela direto sem utilizar o sp_executesql e ela ficou o mesmo desempenho de quando executo ela no SSMS.

    Segue uma explicação da Kimberly.

    EXEC and sp_executesql – how are they different?


    Se a resposta foi útil por favor classifique. Tiago Neves - @tiagolneves - acesse o meu blog http://www.tiagoneves.net

    quinta-feira, 18 de fevereiro de 2016 20:27
  • Edgar,

    A sua Stored Procedure utiliza parâmetros?

    Em caso positivo você pode estar com um plano de execução em cache que não é tão apropriado para o parâmetro que você está utilizando no momento. Em consequência disso a consulta pode demorar um pouco mais do que o normal quando executada via Stored Procedure.

    Por gentileza, leia os links abaixo sobre Parameter Sniffing:

    https://www.brentozar.com/blitzcache/parameter-sniffing/

    https://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server/

    https://blogs.technet.microsoft.com/mdegre/2011/11/06/what-is-parameter-sniffing/#comment-2492


    Felipe Lauffer
    MCSA: SQL Server | MCP

    [ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ]

    sexta-feira, 19 de fevereiro de 2016 10:51
  • Edgar,

    Eu tive um problema semelhante a este porem era o seguinte, quando eu executava uma query na aplicação ela ficava lenta, porem quando eu executava ela no management studio ela executava rápido, descobri que o problema é na aplicação quando ela era executada com o componente sp_executesql o SQL Server estava gerando um plano de execução diferente.

    Transformei a query em um SP e passei a chamar a execução dela direto sem utilizar o sp_executesql e ela ficou o mesmo desempenho de quando executo ela no SSMS.

    Segue uma explicação da Kimberly.

    EXEC and sp_executesql – how are they different?


    Se a resposta foi útil por favor classifique. Tiago Neves - @tiagolneves - acesse o meu blog http://www.tiagoneves.net

    Tiago,

    Concordo com a sua sugestão em relação a indicar o link da Kimberly, existem grandes diferença em relação as formas de execução de uma stored procedure, principalmente quando se esta trabalhando em uma aplicação que necessita chamar esta procedure diversas vezes dentro do mesmo bloco de transação.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 23 de fevereiro de 2016 13:55
    Moderador