以下是我的场景:我有一个通过连接 4 个表返回数据的存储过程。中午有两次批量上传到上述 4 个表之一。负载持续 10-15 分钟。我不希望调用此存储过程的 UI 在这 10-15 分钟的窗口中冻结/阻塞/减速。我不关心从上面的表格中显示脏/未提交的数据。以下是我的查询:
我是否需要仅在白天加载的表上使用 NOLOCK,或者需要将 NOLOCK 添加到连接的所有 4 个表中。例如
SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 WITH (NOLOCK) INNER JOIN Table3 T3 WITH (NOLOCK) INNER JOIN Table4 T4 WITH (NOLOCK)
或者这是否足够
SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 INNER JOIN Table3 T3 INNER JOIN Table4 T4
如果我在检索过程开始时添加一个 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 并在最后将其重置为 READ COMMITTED ,会有什么区别吗?
谢谢
维卡斯