NEWSEQUENTIALID (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
Windows が起動されてから、指定されたコンピューターで、この関数によりこれまでに生成されたどの GUID よりも大きい GUID を生成します。 Windows の再起動後、GUID は範囲の下限からもう一度開始できますが、まだグローバルに一意です。 GUID 列が行識別子として使用される場合、NEWSEQUENTIALID を使用すると、NEWID 関数を使用するよりも高速化できます。 これは、NEWID 関数では、ランダムなアクティビティが発生し、使用されるキャッシュ データ ページが少なくなるためです。 NEWSEQUENTIALID を使用すると、データおよびインデックス ページを完全に入力するためにも役立ちます。
重要
プライバシーを重視する場合は、この関数は使用しないでください。 次に生成される GUID 値を推測できるため、その GUID に関連付けられているデータにアクセスできることになります。
NEWSEQUENTIALID は、Windows の UuidCreateSequential 関数のラッパーであり、何らかのバイト シャッフルが適用されます。
警告
UuidCreateSequential 関数には、ハードウェア依存関係があります。 SQL Server, 、データベース (包含データベースの場合) などは、他のコンピューターに移動すると、連続した値のクラスターを開発できます。 Always On を SQL Database で使用するとき、データベースの別のコンピューターへのフェールオーバーが失敗した場合、シーケンシャル値のクラスターが発生する可能性があります。
構文
NEWSEQUENTIALID ( )
返り値の種類
uniqueidentifier
注釈
NEWSEQUENTIALID() は、型のテーブル列の既定の制約でのみ使用できます uniqueidentifierです。 例:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID());
NEWSEQUENTIALID() を DEFAULT 式で使用する場合、他のスカラー演算子と組み合わせることはできません。 たとえば、次を実行することはできません。
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));
この例で、myfunction()
は、uniqueidentifier
値を受け入れて返すユーザー定義スカラー関数です。
クエリで NEWSEQUENTIALID を参照することはできません。
NEWSEQUENTIALID を使って GUID を生成し、インデックスのリーフ レベルでページの分割とランダム IO を減らすことができます。
NEWSEQUENTIALID を使用して生成された各 GUID は、そのコンピューター上で一意です。 NEWSEQUENTIALID を使用して生成された GUID は、ソース コンピューターにネットワーク カードがある場合にのみ、複数のコンピューター間で一意になります。