没有锁定的SELECT查询

时间:2017-06-05 11:02:36

标签: sql-server

我想使用SELECT WITH NOLOCK,我想要使用SELECT WITH NOLOCK查询的表没有更新查询,我想要获取的数据少于当前插入的记录。我想使用{ {1}}因为有时我在SELECT查询中遇到Timeout异常。我认为这是因为Table会被Insert查询锁定,它会不断运行而SELECT查询必须等待很长时间,因此它会给出Timeout错误。

所以请建议我在这里使用NOLOCK,我读过一些关于未提交的交易的帖子,他们建议不要使用NOLOCK

2 个答案:

答案 0 :(得分:0)

正如文档(Table Hints on MSDN Docs)中所提到的,在使用NOLOCK提示时,您可以看到尚未提交的结果(即由事务提交)。

通过使用此提示,您应该了解这些问题,但如果它不影响您的逻辑,则可以使用它。

答案 1 :(得分:0)

您不仅可以“查看尚未提交的结果”,还可以阅读某些行两次或根本不读取它们。因此,如果不了解您的表格结构和查询,我们就无法为您提供建议。如果你甚至在阅读“数据少于当前插入的记录”时被阻止可能你的桌子上没有适当的索引?