Sql server 2008 查询超时:操作完成前经过的超时时间或服务器没有响应
错误: 超时已过期。完成之前的超时时间 操作或服务器没有响应 我的数据库有60多万行,所以当我试图更新上面的查询时,出现了超时错误 表结构:Sql server 2008 查询超时:操作完成前经过的超时时间或服务器没有响应,sql-server-2008,Sql Server 2008,错误: 超时已过期。完成之前的超时时间 操作或服务器没有响应 我的数据库有60多万行,所以当我试图更新上面的查询时,出现了超时错误 表结构: string cs_insert1 = ConfigurationManager.ConnectionStrings["connect"].ConnectionString; using (SqlConnection ObjCon_insert1 = new SqlConnection(cs_insert1)) { ObjCon_insert1.
string cs_insert1 = ConfigurationManager.ConnectionStrings["connect"].ConnectionString;
using (SqlConnection ObjCon_insert1 = new SqlConnection(cs_insert1))
{
ObjCon_insert1.Open();
string inserStr1 = "Update Attendence set calculate='calculated' calculate!='calculated' and rollno=@rollno and program=@program and batch=@batch and term=@term";
SqlCommand inserCmd1 = new SqlCommand(inserStr1, ObjCon_insert1);
inserCmd1.CommandType = CommandType.Text;
inserCmd1.Parameters.AddWithValue("@rollno", drsg_final["rollno"].ToString());
inserCmd1.Parameters.AddWithValue("@program", drsg_final["program"].ToString());
inserCmd1.Parameters.AddWithValue("@batch", drsg_final["batch"].ToString());
inserCmd1.Parameters.AddWithValue("@term", drsg_final["term"].ToString());
inserCmd1.ExecuteNonQuery();
}
索引:
tid primary key
rollno varchar
program varchar
batch varchar
term varchar
calculate varchar
location varchar
createdby varchar
查询:
CREATE INDEX MasterIndex
ON Attendence (location, createdby, program, batch, term)
有没有其他方法可以更快地处理查询
我做的索引是否正确
我知道我的问题是重复的,但在尝试了所有解决方案(如
SqlCommand.CommandTimeout=300)后,问题仍然存在。索引不太可能有帮助。它的第一列是location,您不需要搜索它。尝试创建一个包含rollno、program、batch和term的索引。强制创建无用的索引肯定会给您带来大问题。在SSMS中尝试您的语句,并尝试创建nick建议的索引。使用将统计信息io设置为on
查看其执行情况。
Update Attendence
set calculate = 'calculated'
from Attendence WITH (INDEX (MasterIndex))
where calculate != 'calculated'
and rollno = @rollno
and program = @program
and batch = @batch
and term = @term