我们正在试图解决一些数据库服务器超时,我能够将其降低到以下几点:超时
SqlConnection con = new SqlConnection("*connectionstring*");
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
var sql = "select top 10 a.id from idx a inner join docs b on a.id=b.id " +
"where b.status in ('X','Y','Z') and [email protected] and a.name like @Name " +
"order by a.id";
cmd.CommandText = sql;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@SC","NC");
cmd.Parameters.AddWithValue("@Name","%ZZZ%");
DateTime before = DateTime.Now;
using (SqlDataReader r = cmd.ExecuteReader()) {
while (r.Read()) {
}
}
DateTime after = DateTime.Now;
Console.WriteLine("Before: " + before.ToString());
Console.WriteLine("After: " + after.ToString());
Console.WriteLine(after - before);
con.Close();
以上时间在ExecuteReader语句中。
如果我将参数值“%ZZZ%”更改为“%SMITH%”,它几乎立即恢复。更好的是,如果我删除命令参数并将CommandText语法更改为纯sql,即 - “...其中sc ='NC'并且名称像'%ZZZ%'”,那么也会在之后几乎立即返回。
有什么想法?我不知所措,并且找不到其他人遇到类似问题的其他线索。提前致谢!
**更新#1:我们能够使用小型Java控制台应用程序复制相同的功能,因此它看起来不是.Net或驱动程序问题。
**更新#2:这是一个非常类似的问题提出的问题here。不完全相同的原因,但效果相同。
你碰巧搞清楚发生了什么?我正在寻找似乎是相同问题的东西,而且我在配置文件中看不到很多东西。 –