从.net客户端查询比从查询窗口查询花费更多的时间

本文关键字:查询 时间 窗口 net 客户端 | 更新日期: 2023-09-27 18:16:15

我有一个很奇怪的情况。当我从SQL管理工作室运行一个存储过程,它按预期工作,只需要1秒返回信息。如果我在IIS上从.net方法进行完全相同的调用,则需要一分钟以上才能完成。我运行了一个跟踪,它在调用存储过程

时冻结了

GetConConsultaCuenta_Mov '20150901 00:00:00','20150930 00:00:00',4896,168123, 0,1,0,0,0,0,'0'

我用非常简单的代码来填充数据

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SqlCommand cmd = new SqlCommand(Sql, con);
    cmd.CommandTimeout = 5000000;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    con.Open();        
    da.Fill(ds);
    cmd.Dispose();
    con.Close();
    da.Dispose();
    con.Dispose();

IIS是本地的,所以不是数据传输的问题

从.net客户端查询比从查询窗口查询花费更多的时间

您不仅要测量返回第一条记录的时间,还要填充数据适配器。根据返回的数据量和元数据的复杂性,这可能需要相当长的时间。

尝试临时更改代码以简单地迭代结果

IDataReader reader = cmd.ExecuteReader();
while (reader.Read());

而不是填充数据适配器。看看时间比较。

附带说明,如果抛出异常,您将不会处置您的IDisposable资源(cmd, con)。使用using关键字来确保正确的资源清理。