NEWSEQUENTIALID() (Transact-SQL)

Windows が起動されてから、指定されたコンピュータで、この関数によりこれまでに生成されたどの GUID よりも大きい GUID を生成します。Windows の再起動後は、GUID は、より小さい範囲から再開できますが、グローバルに一意のままです。GUID 列を行識別子として使用する場合は、NEWSEQUENTIALID を使用すると、NEWID 関数を使用するよりも処理が高速になることがあります。これは、NEWID 関数では、ランダムなアクティビティが発生し、使用されるキャッシュ データ ページが少なくなるためです。また、NEWSEQUENTIALID を使用すると、データ ページとインデックス ページを完全に埋めることができます。

重要な注意事項重要

プライバシーを重視する場合は、この関数は使用しないでください。次に生成される GUID の値が予測されるため、その GUID に関連するデータへのアクセスが発生する可能性があります。

NEWSEQUENTIALID は、Windows の UuidCreateSequential 関数のラッパーです。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

NEWSEQUENTIALID ( )

戻り値の型

uniqueidentifier

説明

NEWSEQUENTIALID() は、uniqueidentifier 型のテーブルの列に対して、DEFAULT 制約と併用する場合にのみ使用できます。次に例を示します。

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) 

NEWSEQUENTIALID() を DEFAULT 式で使用する場合、他のスカラ演算子と組み合わせることはできません。たとえば、次を実行することはできません。

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID())) 

この例で、myfunction() は、uniqueidentifier 値を受け入れて返すユーザー定義スカラ関数です。

クエリで NEWSEQUENTIALID() を参照することはできません。

NEWSEQUENTIALID() を使って GUID を生成し、インデックスのリーフ レベルでページの競合を減らすことができます。

NEWSEQUENTIALID() を使用して生成された各 GUID は、そのコンピュータ上で一意です。NEWSEQUENTIALID() によって生成された GUID は、ソース コンピュータにネットワーク カードがある場合にのみ、複数のコンピュータ間で一意になります。GUID の詳細については、「uniqueidentifier データの使用」を参照してください。

変更履歴

変更内容

Windows を再起動した場合の GUID に対する影響についての説明を追加しました。