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

Lợi ích của việc có trường varbinary trong một bảng 1-1 riêng biệt là gì?

Không có hiệu suất cũng như lợi thế hoạt động. Kể từ SQL 2005, các kiểu LOB đã đã được engine lưu trữ cho bạn trong một đơn vị phân bổ riêng biệt, một cây b riêng biệt. Nếu bạn nghiên cứu về Tổ chức bảng và chỉ mục của SQL Server, bạn sẽ thấy rằng mỗi phân vùng có tối đa 3 đơn vị cấp phát:dữ liệu, LOB và tràn hàng:


(nguồn: s-msft.com )

Trường LOB (varchar (max), nvarchar (max), varbinary (max), XML, CLR UDT cũng như các loại văn bản, ntext và hình ảnh không được dùng nữa) sẽ có trong chính bản ghi dữ liệu, trong chỉ mục nhóm, chỉ một dấu chân rất nhỏ:một con trỏ vào đơn vị phân bổ LOB, xem Anatomy of a Record .

Bằng cách lưu trữ LOB rõ ràng trong một bảng riêng biệt bạn hoàn toàn không thu được gì . Bạn chỉ cần thêm sự phức tạp không cần thiết vì các bản cập nhật nguyên tử trước đây phải tự phân phối chúng thành hai bảng riêng biệt, làm phức tạp ứng dụng và cấu trúc giao dịch ứng dụng.

Nếu nội dung LOB là toàn bộ tệp thì có lẽ bạn nên xem xét nâng cấp lên SQL 2008 và sử dụng FILESTREAM .



  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 xác định giá trị cho các tháng bị thiếu dựa trên dữ liệu của các tháng trước trong T-SQL

  2. SQL đếm hàng trong một bảng

  3. Tạo người dùng trong cơ sở dữ liệu Azure SQL bằng các hàm Azure?

  4. hiển thị các tuần báo cáo

  5. Truy vấn gỡ xuống:chèn <TableNameX> chọn *. %% bmk %% từ <TableNameX>