今天写一个Update语句是发现了一个令人费解的问题,具体是这样的:(语言:C#)
SqlCommand.CommandText = "Update table set a = @a, b = @b, c = @c where sn = @sn and tmp = @tmp";table表的主键是sn、tmp构成的双主键,数据库记录大概有2000w条,可以看出这条SQL语句是个很简单的语句,可是在实际执行的时候却总是提示操作超时,我将超时时间改为60s依然超时,而在实际应用中用这么长的时间执行一条更新语句也是不现实的。
为了确定是不是数据库服务器性能的问题,我在企业管理器中手动执行了上面的更新语句,发现速度正常!后来将程序中的语句改为:
SqlCommand.CommandText = "Update table set a = @a, b = @b, c = @c where sn = '" + _SN + "' and tmp = '" + _TMP + "'"; //_SN, _TMP为局部变量执行上面的程序数据库更新速度正常!对比可以发现仅仅改变了WHERE条件部分的字符串,而执行速度大幅提升,不知道大家有没有遇到这个问题?期待大家帮忙分析一下这个问题,谢谢!