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

Sử dụng mã định danh duy nhất (GUID) hay mã định danh cho cột nhận dạng sẽ tốt hơn?

Điều đó phụ thuộc vào những gì bạn đang làm:

  • Nếu tốc độ là mối quan tâm hàng đầu thì int đơn giản là cũ có lẽ đủ lớn.
  • Nếu bạn thực sự sẽ có hơn 2 tỷ bản ghi (với B;)), thì hãy sử dụng bigint hoặc một hướng dẫn tuần tự.
  • Nếu bạn cần có thể dễ dàng đồng bộ hóa với các bản ghi được tạo từ xa, thì Guid thực sự tuyệt vời.

Cập nhật
Một số ghi chú bổ sung (ít rõ ràng hơn) về Guids:

  • Chúng có thể khó lập chỉ mục và điều đó ảnh hưởng đến cốt lõi của hiệu suất cơ sở dữ liệu
  • Bạn có thể sử dụng các lệnh tuần tự để lấy lại một số hiệu suất lập chỉ mục, nhưng hãy loại bỏ một số tính ngẫu nhiên được sử dụng ở điểm hai.
  • Khó gỡ lỗi bằng tay các trình hướng dẫn (where id='xxx-xxx-xxxxx' ), nhưng bạn cũng nhận được một số trong số đó thông qua các guids tuần tự (where id='xxx-xxx' + '123' ).
  • Vì lý do tương tự, Guids có thể khiến các cuộc tấn công bảo mật dựa trên ID trở nên khó khăn hơn - nhưng không phải là không thể. (Bạn không thể chỉ nhập 'http://example.com?userid=xxxx' và mong đợi nhận được kết quả cho tài khoản của người khác).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để Hiển thị Số Trang trong Nội dung Báo cáo của SSRS 2008 R2?

  2. Duy trì tính toàn vẹn của lớp con trong cơ sở dữ liệu quan hệ

  3. Đồng bộ hóa một chiều theo thời gian thực từ sql-server đến một kho lưu trữ dữ liệu khác

  4. Chuyển đổi ‘smalldatetime’ thành ‘datetime’ trong SQL Server (Ví dụ T-SQL)

  5. Cách bắt đầu với SQL Server trên Azure