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

Tại sao &Khi nào tôi nên sử dụng SPARSE COLUMN? (SQL SERVER 2008)

Một cột thưa thớt không sử dụng gấp 4 lần dung lượng để lưu trữ một giá trị, nó sử dụng 4 byte bổ sung (cố định) mỗi giá trị không rỗng. (Như bạn đã nói, NULL chiếm 0 khoảng trắng.)

  • Vì vậy, một giá trị không phải null được lưu trữ trong một bit cột sẽ là 1 bit + 4 byte =4,125 byte. Nhưng nếu 99% trong số này là NULL, thì đó vẫn là một khoản tiết kiệm ròng.

  • Giá trị không rỗng được lưu trữ trong GUID (UniqueIdentifier) ​​ cột là 16 byte + 4 byte =20 byte. Vì vậy, nếu chỉ 50% trong số này là NULL, thì đó vẫn là khoản tiết kiệm ròng.

Vì vậy, "khoản tiết kiệm dự kiến" phụ thuộc nhiều vào loại loại của cột chúng ta đang nói đến và ước tính của bạn về tỷ lệ nào sẽ là null và không null. Các cột có độ rộng thay đổi (varchars) có lẽ khó dự đoán chính xác hơn một chút.

Trang Sách Trực tuyến này có một bảng hiển thị tỷ lệ phần trăm của các loại dữ liệu khác nhau sẽ cần phải là giá trị rỗng để bạn có được lợi ích.

So khi bạn có nên sử dụng một cột thưa thớt không? Khi bạn mong đợi một tỷ lệ phần trăm đáng kể của các hàng có giá trị NULL. Một số ví dụ mà bạn nghĩ đến:

  • " Ngày trả lại đơn đặt hàng "trong bảng đơn đặt hàng. Bạn hy vọng rằng một phần trăm rất nhỏ doanh số bán hàng sẽ dẫn đến các sản phẩm bị trả lại.
  • A " Địa chỉ thứ 4 "trong bảng Địa chỉ. Hầu hết các địa chỉ gửi thư, ngay cả khi bạn cần tên Bộ và" Chăm sóc "có thể không cần 4 dòng riêng biệt.
  • A " Hậu tố "trong bảng khách hàng. Một tỷ lệ khá thấp mọi người có" Jr. "hoặc" III "hoặc" Esquire "sau tên của họ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao truyền từ float sang varchar được làm tròn trong SQL Server?

  2. Cách tìm ngôn ngữ mặc định của người dùng trong SQL Server (T-SQL)

  3. Nội tuyến UDF vô hướng trong SQL Server 2019

  4. SSIS Nhiệm vụ để nhập số lượng cột không nhất quán?

  5. Làm thế nào để chọn tất cả các bản ghi từ một bảng mà không tồn tại trong một bảng khác?