背景:我想运行一个性能关键的查询,并且我不关心脏读。
我的问题是;如果我使用连接,我是否还必须在这些连接上指定 NOLOCK 提示?
例如;是:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b WITH (NOLOCK) ON a.ID = b.ID
相当于:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b ON a.ID = b.ID
或者我需要指定(NOLOCK)
关于连接的提示以确保我没有锁定连接表?
我不会解决READ UNCOMMITTED
争论,只是你原来的问题。
是的,你需要WITH(NOLOCK)
在连接的每个表上。不,您的查询不一样。
尝试这个练习。开始事务并向 table1 和 table2 中插入一行。暂时不要提交或回滚事务。此时,您的第一个查询将成功返回并包含未提交的行;您的第二个查询不会返回,因为 table2 没有WITH(NOLOCK)
暗示它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)