若同一个表多次出现在查询中,我们是否每次都必须添加WITH(NOLOCK)



如果同一个表在一个查询中多次存在,我们是否必须每次添加WITH (NOLOCK)?假设我们有一个巨大的查询,其中同一个表可能被多次引用,那么我们是否每次都必须添加WITH (NOLOCK),或者我们可以添加一次,SQL将确保使用WITH (NOLOCK)提示读取它的每个实例。

我在上面的评论中发布了几个文章链接,以帮助说明使用NOLOCK应该谨慎。但话虽如此,如果你已经做了研究并了解了自己的发展方向,那么有一种更简单的方法可以实现

特别是当使用具有许多表引用的查询时,只需设置会话的事务隔离级别,而不是对所有表引用都使用WITH(NOLOCK)提示。在查询上方包含一行:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

这在功能上与向查询中的每个表添加提示相同,您可以确保没有遗漏任何表。

另一方面,如果你,你和你的最终用户可能会更快乐

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; 

你的独立研究会告诉你为什么这是真的。

相关内容

最新更新