开启事务后,在其中多次查询同一表会报错(运行超时)的解决办法
最近遇到这个问题,困扰了他们很久,就是在开启的事务中,要循环对某一个表进行查询,在查询第一次的时候,没有问题,当查询第二次的时候,就会等上n久,最后返回来“超时”,这是由于在事务开启后,对某一个表进行查询时,会对这个表添加锁,直到这个事务提交或回滚后,这个锁才能被去掉。
下面是解决方法,其实也挺简单的,就是加一句话而已:
在要查询的表的表名后,添加“with(nolock)”,就这样就可以避免事务查询表时,对表添加锁。
写全面就是:select * from 表名 with(nolock) where ...