none
sqlcommand muito lento RRS feed

  • Pergunta

  • Tenho uma stored procedure que quando executo pelo Sql Server Management Studio a mesma demora menos de 1 segundo.

    Quando faço uma chamada da mesma dentro de um projeto .NET essa consulta leva 2 minutos e 30 segundos utilizando os mesmos parâmetros (abaixo exemplo do código).

    Esta stored procedure possui apenas um select, então coloquei diretamente a consulta dentro do fonte e a consulta foi feita em 40 segundos.

    Existe algum motivo para essa lentidão? Alguém já viu alguma situação desse tipo, ou melhor ainda, sabe a solução? 

    (Obs.: Aplicação em 3 camadas, com interface em WebForm, Visual Studio 2010 e SQL Server 2008 R2)

    Grato

    --------------------------

    public override int GetQtde(int param1, int param2, int param3)
            {
                SqlConnection con = (SqlConnection)DBConnections.CreateConnection(TipoBanco.SQL_Server);
                con.Open();

                try
                {
                    SqlCommand cmd = new SqlCommand("nome-da-sp", con);
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@param1", SqlDbType.Int).Value = param1;
                    cmd.Parameters.Add("@param2", SqlDbType.Int).Value = param2;
                    cmd.Parameters.Add("@param3", SqlDbType.Int).Value = param3;
                    cmd.CommandTimeout = 600;

                    int qtde = Convert.ToInt32(cmd.ExecuteScalar());

                    return qtde;
                }
                finally
                {
                    con.Close();
                }
            }


    terça-feira, 9 de outubro de 2012 19:05

Todas as Respostas

  • Como você trafega dados entre as camadas? Um DataSet?
    Talvez a lentidão não enteja na Query e sim em outros pontos da aplicação.

    Posta como você recupera esses valores e como exibe eles na tela.

    Abraços,


    Se sua questão foi respondida, favor marcar.

    André Baltieri
    MTAC – Microsoft Technical Audience Contributor

    Twitter: @andrebaltieri
    Blog: http://andrebaltieri.net
    Site: http://sismat.com.br

    terça-feira, 9 de outubro de 2012 20:02
  • Estou tento o mesmo problema mas nao sei se é o mesmo caso.

    A consulta leva menos de 1 segundo no banco mas na hora de fazer a conversão dos dados do dataReader para o meu modelo já demora  mais.

    A minha preocupação é quão lento ele vai ficar pois tenho poucos registros atualmente e quando ele estiver rodando em produção vai ficar tenso.

    Alguem tem uma sugestão?

    Estou usando sqlcommand para executar as consultas e a cada registro encontrado no dataReader converto para o meu modelo.

    quinta-feira, 4 de julho de 2013 18:00