1

newid()UDFで使用するために、次のようなビューを作成しました。

create view RandomUUID as select newid() as UUID

このようにして、UDFはnewid()にアクセスできるようになります。かっこいい

しかし、私の質問は、これを選択するための最良の方法は何ですか?UDFのクエリにTOP 1またはを追加するのは理にかなっていますか?(nolock)のように:

select UUID from RandomUUID

対。

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

アップデート:

このSqlFiddleは、これがどのように使用されているかを示しています。

4

1 に答える 1

1

ロックするレコードがないため、追加(nolock)する理由はありません!記録のために、SQL Server 2008以降(または2005年)からの(NOLOCK)ように記述する必要があります。WITH (nolock)

TOP (1)作成される行は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操作が追加されます(実行プランを拡張します)。

于 2012-11-09T21:50:00.440 に答える