text
và ntext
không được dùng nữa, vì vậy hãy bỏ qua chúng trong giây lát. Đối với những gì còn lại, có 3 kích thước:
- Unicode (UCS-2) so với non-unicode:
N
phía trước tên biểu thị Unicode - Độ dài cố định so với độ dài thay đổi:
var
biểu thị biến, nếu không thì cố định - Trong hàng so với BLOB:
(max)
vì độ dài biểu thị BLOB, ngược lại là giá trị trong hàng
Vì vậy, với điều này, bạn có thể đọc ý nghĩa của bất kỳ loại nào:
-
CHAR(10)
:là độ dài cố định trong hàng không phải Unicode có kích thước 10 -
NVARCHAR(256)
:là một Unicode có độ dài thay đổi trong hàng có kích thước lên đến 256 -
VARCHAR(MAX)
:là độ dài thay đổi BLOB không phải Unicode
Các loại text
không dùng nữa và ntext
tương ứng với các loại mới varchar(max)
và nvarchar(max)
tương ứng.
Khi bạn đi đến chi tiết, ý nghĩa của in-row
so với BLOB
làm mờ các chiều dài nhỏ vì động cơ có thể tối ưu hóa bộ nhớ và kéo BLOB trong hàng hoặc đẩy một giá trị trong hàng vào đơn vị phân bổ 'BLOB nhỏ', nhưng đây chỉ là chi tiết triển khai. Xem Tổ chức Bảng và Chỉ mục
.
Từ quan điểm lập trình, tất cả các loại:CHAR
, VARCHAR
, NCHAR
, NVARCHAR
, VARCHAR(MAX)
và NVARCHAR(MAX)
, hỗ trợ API chuỗi thống nhất: Hàm chuỗi
. Loại TEXT
cũ, không được dùng nữa và NTEXT
không không hỗ trợ API này, họ có một API TEXT riêng biệt, phụ thuộc, để thao tác. Bạn không nên sử dụng các loại không dùng nữa.
Các loại BLOB hỗ trợ cập nhật tại chỗ hiệu quả bằng cách sử dụng cột UPDATE table SET column.WRITE(@value, @offset)
cú pháp.
Sự khác biệt giữa các loại độ dài cố định và độ dài thay đổi sẽ biến mất khi nén hàng trên bảng. Với tính năng nén hàng được bật, các loại độ dài cố định và độ dài thay đổi được lưu trữ ở cùng một định dạng và dấu cách ở cuối không được lưu trữ trên đĩa, hãy xem Triển khai Nén hàng . Lưu ý rằng nén trang có nghĩa là nén hàng.