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

SQL Server BIGINT hoặc DECIMAL (18,0) cho khóa chính

Bạn nhận được phạm vi này với bigint:

-2^63 to 2^63-1 

also known as roughly:

-9.2 x 10^18 to 9.2 x 10^18

Bạn nhận được phạm vi này với số thập phân (18,0) :

-10^18 to 10^18

Số thập phân:Số byte lưu trữ trên mỗi độ chính xác

Precision    Storage Bytes
1-9:         5
10-19:       9
20-28:       13
29-38:       17

Loại số nguyên và byte lưu trữ

integer type    Storage Bytes
bigint          8
int             4
smallint        2
tinyint         1

Suy nghĩ

Hai ví dụ được đăng trong Câu hỏi của bạn thực sự mang lại số lượng giá trị duy nhất gần như giống nhau.

Ngoài ra, bạn sẽ không thấy sự thay đổi hiệu suất đáng kể cho dù lựa chọn của bạn là gì, nhưng bạn sẽ thấy sự thay đổi về hiệu quả đối với các lập trình viên khác trong nhóm nếu bạn bắt đầu sử dụng số thập phân trong đó các lập trình viên đang mong đợi một số nguyên. Đây là một điểm nhỏ.

Để giải quyết vấn đề cụ thể của bạn, nếu bạn muốn một phạm vi lớn hơn, hãy sử dụng Decimal (38,0). Điều này mang lại cho bạn:

-10^38 to 10^38

Nếu bạn lo lắng về tốc độ, hãy sử dụng độ chính xác tối thiểu sẽ kéo dài tuổi thọ của phần mềm của bạn.

Nếu bạn không đo thời gian bằng nano giây, thì hãy chọn tùy chọn phù hợp nhất với tư duy của lập trình viên và mong muốn có một bộ số rất dài của bạn.

Tài liệu tham khảo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về ROUND () trong SQL Server

  2. SQL Server thực hiện sao lưu với C #

  3. Loại SQL chính xác để lưu trữ .Net Timespan có giá trị> 24:00:00 là gì?

  4. Không thể tải tệp hoặc lắp ráp Microsoft.ReportViewer.WebForms.XmlSerializers

  5. Làm cách nào để bạn tạo trường boolean có / không trong máy chủ SQL?