对仅选择newid()的视图使用锁定提示或顶部子句?

时间:2012-11-09 21:47:15

标签: sql-server view locking guid user-defined-functions

为了在UDF中使用newid(),我创建了一个可以帮助我的视图:

create view RandomUUID as select newid() as UUID

通过这种方式,UDF现在可以访问newid()。 Cool

然而,我的问题是选择此选项的最佳方法是什么?在我的UDF中向查询添加TOP 1(nolock)是否有意义?如:

select UUID from RandomUUID

VS

select top 1 UUID from RandomUUID (nolock) -- Or any other combo of query modifiers

更新:

SqlFiddle演示了如何使用它。

1 个答案:

答案 0 :(得分:1)

没有理由添加(nolock)因为没有锁定记录!为了记录,(NOLOCK)应该从SQL Server 2008开始编写为WITH (nolock)(或者是2005年)。

TOP (1)会在这里添加一个无关的SORT运算符,因为只创建了一行。


您可以像这样创建:

create view RandomUUID as select newid() as UUID;
GO

create function give_me_a_new_id ()
returns uniqueidentifier as
begin
return (select UUID from RandomUUID);
end;
GO

注意:(nolock)将被优化掉,但是TOP(1)会添加一个SORT操作,如here所示(展开执行计划)。