Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server:apakah NEWID() selalu memberikan ID unik?

Keduanya NEWID() dan NEWSEQUENTIALID() berikan nilai unik global dari jenis uniqueidentifier .

NEWID() melibatkan aktivitas acak, sehingga nilai berikutnya tidak dapat diprediksi, dan lebih lambat untuk dieksekusi.

NEWSEQUENTIALID() tidak melibatkan aktivitas acak, sehingga nilai yang dihasilkan berikutnya dapat diprediksi (tidak mudah!) dan dieksekusi lebih cepat dari NEWID() .

Jadi, jika Anda tidak khawatir dengan prediksi nilai berikutnya (untuk alasan keamanan), Anda dapat menggunakan NEWSEQUENTIALID() . Jika Anda khawatir tentang prediktabilitas atau Anda tidak keberatan dengan penalti kinerja kecil, Anda dapat menggunakan NEWID() .

Namun, dalam arti sempit, masih ada kemungkinan kecil bahwa GUID yang dihasilkan oleh mesin yang berbeda memiliki nilai yang sama. Dalam praktiknya, itu dianggap tidak mungkin.

Jika Anda ingin info lebih lanjut, baca ini:Metode mana untuk menghasilkan GUID yang terbaik untuk memastikan GUID benar-benar unik?

Catatan NEWID() mematuhi RFC 4122 . Dan fungsi lainnya menggunakan algoritme Microsoft untuk menghasilkan nilai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trik penyetelan performa favorit

  2. Ekspor hasil prosedur tersimpan yang disetel ke Excel di SSMS

  3. Simulasi CONNECT SEBELUMNYA dari Oracle di SQL Server

  4. 10 FAQ Teratas Tentang Pemantauan Kinerja SQL Server

  5. Hapus Data melalui Fungsi Bernilai Tabel di SQL Server