ms sql在对大表做很慢的更新语句时,应单条处理,而不要一个语句更新多条,以避免锁表而阻塞其它应用的读操作
接到一客户的要求,需要修改其发布过所有文章里的联系方式,于是写sql语句,拿到mssql客户端里直接执行。
起初写的是这种形式的语句
update article set [content]=replace(content,’aaaa’,’bbbb’) where companyid=123
写起来很简单,但是执行时花了3分钟都没有执行完,在执行过程中,网站上对article表访问的页面全部长时间没有响应。于是赶快停掉这个update语句。前面页面马上恢复正常。
分析原因应该是在update时,表被锁定,而阻塞了所有操作。
于是改成
update article set [[……]