从.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是本地的,所以不是数据传输的问题
您不仅要测量返回第一条记录的时间,还要填充数据适配器。根据返回的数据量和元数据的复杂性,这可能需要相当长的时间。
尝试临时更改代码以简单地迭代结果
IDataReader reader = cmd.ExecuteReader();
while (reader.Read());
而不是填充数据适配器。看看时间比较。
附带说明,如果抛出异常,您将不会处置您的IDisposable资源(cmd, con)。使用using
关键字来确保正确的资源清理。