Sql server 2008 查询超时:操作完成前经过的超时时间或服务器没有响应

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.

错误:

超时已过期。完成之前的超时时间 操作或服务器没有响应

我的数据库有60多万行,所以当我试图更新上面的查询时,出现了超时错误

表结构:

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