我在 Microsoft SQL Server 2016 上,并且有以下(简化的)查询引用了一个视图:
SELECT Column1
FROM dbo.myView
视图如下所示:
CREATE VIEW dbo.myView
AS
SELECT Column1
FROM dbo.SomeOtherTable WITH (NOLOCK)
我现在的问题是:外部 SELECT不使用 NOLOCK 表提示这一事实是否意味着 VIEW 内的 NOLOCK 无关紧要?还是在执行外部 SELECT 时 NOLOCK 仍然相关?
我的问题的更大背景是我有一个案例,我正在分析服务器上的阻塞情况。我发现了一个查询,例如上面描述的 SELECT:一个 SELECT 查询正在使用一个 VIEW。VIEW 使用了 NOLOCK 表提示,但外部 SELECT 没有使用。尽管如此,该查询仍然是一个障碍,我正在尝试找出原因。
我已经做了一些研究,我能找到的唯一确认是人们想知道 aNOLOCK
是否传播到内部表的问题。