Bagikan melalui


NEWSEQUENTIALID (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Membuat GUID yang lebih besar dari GUID yang sebelumnya dihasilkan oleh fungsi ini pada komputer tertentu sejak Windows dimulai. Setelah Windows dimulai ulang, GUID dapat dimulai lagi dari rentang yang lebih rendah, tetapi masih unik secara global. Saat kolom GUID digunakan sebagai pengidentifikasi baris, penggunaan NEWSEQUENTIALID bisa lebih cepat daripada menggunakan NEWID fungsi . Ini karena fungsi menyebabkan NEWID aktivitas acak dan menggunakan lebih sedikit halaman data yang di-cache. Menggunakan NEWSEQUENTIALID juga membantu mengisi sepenuhnya data dan halaman indeks.

Penting

Jika privasi menjadi perhatian, jangan gunakan fungsi ini. Dimungkinkan untuk menebak nilai GUID yang dihasilkan berikutnya dan, oleh karena itu, mengakses data yang terkait dengan GUID tersebut.

NEWSEQUENTIALID adalah pembungkus atas fungsi Windows UuidCreateSequential , dengan beberapa pengacakan byte diterapkan.

Peringatan

Fungsi ini UuidCreateSequential memiliki dependensi perangkat keras. Di SQL Server, kluster nilai berurutan dapat berkembang ketika database (seperti database yang terkandung) dipindahkan ke komputer lain. Di Azure SQL Database dan saat Anda menggunakan Always On, kluster nilai berurutan dapat berkembang jika database gagal ke komputer lain.

Konvensi sintaks transact-SQL

Sintaks

NEWSEQUENTIALID ( )

Tipe pengembalian

pengidentifikasi unik

Keterangan

NEWSEQUENTIALID hanya dapat digunakan dengan DEFAULT batasan pada kolom tabel jenis uniqueidentifier. Contohnya:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID()
);

Saat NEWSEQUENTIALID digunakan dalam DEFAULT ekspresi, itu tidak dapat dikombinasikan dengan operator skalar lainnya. Misalnya, Anda tidak dapat menjalankan kode berikut:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT dbo.myfunction(NEWSEQUENTIALID())
);

Dalam contoh sebelumnya, myfunction() adalah fungsi skalar yang ditentukan pengguna yang menerima dan mengembalikan uniqueidentifier nilai.

NEWSEQUENTIALID tidak dapat direferensikan dalam kueri.

Anda dapat menggunakan NEWSEQUENTIALID untuk menghasilkan GUID untuk mengurangi pemisahan halaman dan IO acak pada tingkat daun indeks.

Setiap GUID yang dihasilkan dengan menggunakan NEWSEQUENTIALID unik di komputer tersebut. GUID yang dihasilkan dengan menggunakan NEWSEQUENTIALID unik di beberapa komputer hanya jika komputer sumber memiliki kartu jaringan.