Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server:NEWID () có luôn cung cấp một ID duy nhất không?

Cả NEWID() NEWSEQUENTIALID() cung cấp các giá trị duy nhất trên toàn cầu của loại uniqueidentifier .

NEWID() liên quan đến hoạt động ngẫu nhiên, do đó giá trị tiếp theo là không thể đoán trước và nó thực thi chậm hơn.

NEWSEQUENTIALID() không liên quan đến hoạt động ngẫu nhiên, do đó, giá trị được tạo tiếp theo có thể được dự đoán (không dễ dàng!) và thực thi nhanh hơn NEWID() .

Vì vậy, nếu bạn không lo lắng về giá trị tiếp theo được dự đoán (vì lý do bảo mật), bạn có thể sử dụng NEWSEQUENTIALID() . Nếu bạn lo lắng về khả năng dự đoán hoặc bạn không bận tâm về hình phạt hiệu suất nhỏ, bạn có thể sử dụng NEWID() .

Tuy nhiên, theo nghĩa chặt chẽ, vẫn có khả năng không đáng kể là các GUID do các máy khác nhau tạo ra có cùng giá trị. Trong thực tế, điều đó được coi là không thể.

Nếu bạn muốn biết thêm thông tin, hãy đọc phần này: Phương pháp tạo GUID nào là tốt nhất để đảm bảo GUID thực sự là duy nhất?

Lưu ý NEWID() tuân thủ RFC 4122 . Và chức năng khác sử dụng thuật toán của Microsoft để tạo ra giá trị.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng nhiều câu lệnh Hàm có giá trị so với Hàm được định giá trong bảng nội tuyến

  2. Cách SCHEMA_NAME () hoạt động trong SQL Server

  3. Công dụng của dấu ngoặc vuông [] trong câu lệnh sql là gì?

  4. Cách hàm FORMAT () hoạt động trong SQL Server (T-SQL)

  5. Kích hoạt SQL Server:Kích hoạt DML