为了在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演示了如何使用它。
答案 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所示(展开执行计划)。