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

số (38,0) làm cột khóa chính; tốt, xấu, ai quan tâm?

Chà, bạn chi tiêu nhiều dữ liệu hơn để lưu trữ những con số mà bạn sẽ không bao giờ thực sự đạt được.

bigint tăng lên đến 9.223.372.036.854.775.807 trong 8 Byte

int lên đến 2,147,483,647 trong 4 byte

Một NUMERIC (38,0) sẽ mất, nếu tôi làm đúng phép toán là 17 byte.

Không phải là một sự khác biệt quá lớn, mà là:kiểu dữ liệu nhỏ hơn =nhiều hàng hơn trong bộ nhớ (hoặc ít trang hơn cho cùng một số hàng) =ít I / O ổ đĩa hơn để thực hiện tra cứu (tìm kiếm trang dữ liệu hoặc được lập chỉ mục). Tương tự đối với các trang nhân bản, nhật ký, v.v.

Đối với SQL Server:INT là một tiêu chuẩn IEEE và do đó, CPU dễ dàng so sánh hơn, vì vậy bạn sẽ nhận được hiệu suất tăng nhẹ bằng cách sử dụng INT so với NUMERIC (là một định dạng thập phân đóng gói). (Lưu ý trong Oracle, nếu phiên bản hiện tại khớp với các phiên bản cũ hơn mà tôi lớn lên, TẤT CẢ các kiểu dữ liệu đều được đóng gói để INT bên trong khá giống với một NUMERIC (x, 0) nên không có sự khác biệt về hiệu suất)

Vì vậy, trong sơ đồ tổng thể - nếu bạn có nhiều đĩa, RAM và I / O dự phòng, hãy sử dụng bất kỳ loại dữ liệu nào bạn muốn. Nếu bạn muốn đạt được hiệu suất cao hơn một chút, hãy tiết chế hơn một chút.

Nếu không vào thời điểm này, tôi sẽ để nó như vậy. Không cần thay đổi mọi thứ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng UPDATE từ SELECT trong SQL Server

  2. SSRS lựa chọn kết quả dựa trên danh sách được phân tách bằng dấu phẩy

  3. Kích hoạt và cập nhật thành một hàng trong SQL Server sau khi nó được cập nhật

  4. Tạo Hình ảnh Docker SQL Server tùy chỉnh trên đầu Hình ảnh chính thức

  5. SharePoint 2010 - Thay đổi từ Kerberos sang Xác thực dựa trên xác nhận quyền sở hữu