gpt4 book ai didi

sql-server - SQL 服务器 2008 : how does NOLOCK works for CTE?

转载 作者:行者123 更新时间:2023-12-05 09:00:13 25 4
gpt4 key购买 nike

我的 CTE 内部都使用了 NOLOCK。但是然后从使用子 CTE 的父 CTE 中的那些 CTE 中选择不使用 NOLOCK,因为假定它已经是 NOLOCK。并且最终选择也不使用 NOLOCK。

类似的东西:

with cte1 as
(select * from tab1 (nolock)),
cte2 as
(select * from cte1)

select * from cte2

或者我应该写

with cte1 as
(select * from tab1 (nolock)),
cte2 as
(select * from cte1 (nolock))

select * from cte2 (nolock)

谢谢

最佳答案

您不需要外部 nolock 来避免在 tab1 上获取共享锁。您可以通过设置 SQL Profiler 跟踪来轻松验证这一点,该跟踪捕获 locks 类别中的各种事件,过滤 SSMS 连接的 spid 并尝试两个版本。

nolock 是一个非常危险的设置,您是否知道使用它的所有可能缺点(脏读、读取数据两次或根本不读取)?

关于sql-server - SQL 服务器 2008 : how does NOLOCK works for CTE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com