Sql server SQL Server:介于1ms和1ms之间的Delete语句

Sql server SQL Server:介于1ms和1ms之间的Delete语句,sql-server,performance,Sql Server,Performance,我在我的C#项目中使用SqlTransaction,我使用Delete语句和ecexutenquery调用 这工作得很好,我总是有相同数量的行要删除,但95%的时间,这需要1毫秒,约5%的时间,它是在300-500毫秒之间 我的代码: using (SqlTransaction DbTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted)) { SqlCommand dbQuery = conn.CreateCommand

我在我的C#项目中使用
SqlTransaction
,我使用
Delete
语句和
ecexutenquery
调用

这工作得很好,我总是有相同数量的行要删除,但95%的时间,这需要1毫秒,约5%的时间,它是在300-500毫秒之间

我的代码:

using (SqlTransaction DbTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted))
{
      SqlCommand dbQuery = conn.CreateCommand();
      dbQuery.Transaction = DbTrans;
      dbQuery.CommandType = CommandType.Text;
      dbQuery.CommandText = "delete from xy where id = @ID";
      dbQuery.Parameters.Add("ID", SqlDbType.Int).Value = x.ID;
      dbQuery.ExecuteNonQuery();
}
我的代码有问题吗?

请阅读并开始解决此类问题

当然,我假设您在
xy.id
上有索引。您的删除可能会不时被阻止。这可能是由多种原因造成的:

  • 来自其他查询的数据锁
  • IO块与您的硬件连接
  • 记录增长事件
其要点是,使用上面链接的文章(特别是第二篇文章)中的技巧,您可以确定原因并适当地解决它

对C#代码的更改几乎不会产生任何影响(如果有的话)。使用存储过程是非常困难的 不会有帮助的。你需要找出问题的根本原因