TEXT
và VarChar(MAX)
là loại dữ liệu ký tự Độ dài biến không lớn Unicode, có thể lưu trữ tối đa 2147483647 Ký tự không Unicode (tức là dung lượng lưu trữ tối đa là: 2GB).
Theo liên kết MSDN, Microsoft đang đề xuất tránh sử dụng kiểu dữ liệu Văn bản và nó sẽ bị xóa trong các phiên bản tương lai của Sql Server. Varchar (Max) là loại dữ liệu được đề xuất để lưu trữ các giá trị chuỗi lớn thay vì loại dữ liệu Văn bản.
- Lưu trữ liên tiếp hoặc ngoài luồng
Dữ liệu của một Text
cột loại được lưu trữ ngoài hàng trong một trang dữ liệu LOB riêng. Hàng trong trang dữ liệu bảng sẽ chỉ có một con trỏ 16 byte đến trang dữ liệu LOB nơi có dữ liệu thực tế. Trong khi Dữ liệu của một Varchar(max)
cột loại được lưu trữ liên tiếp nếu nó nhỏ hơn hoặc bằng 8000 byte. Nếu giá trị cột Varchar (tối đa) vượt qua 8000 byte thì giá trị cột Varchar (max) được lưu trữ trong một trang dữ liệu LOB riêng và hàng sẽ chỉ có một con trỏ 16 byte đến trang dữ liệu LOB nơi có dữ liệu thực tế. Vì vậy, In-Row
Varchar (Max) là tốt cho tìm kiếm và truy xuất.
- Các chức năng được hỗ trợ / không được hỗ trợ
Một số hàm chuỗi, toán tử hoặc cấu trúc không hoạt động trên cột Loại văn bản, nhưng chúng hoạt động trên cột loại VarChar (Max).
=
Bằng với toán tử trên cột loại VarChar (Max)
Nhóm theo mệnh đề trên cột loại VarChar (Max)
Như chúng ta biết rằng các giá trị cột loại VarChar (Max) chỉ được lưu trữ ngoài hàng nếu độ dài của giá trị được lưu trữ trong nó lớn hơn 8000 byte hoặc không có đủ không gian trong hàng, nếu không nó sẽ lưu trữ nó liên tiếp Vì vậy, nếu hầu hết các giá trị được lưu trữ trong cột VarChar (Max) lớn và được lưu ngoài hàng, thì hành vi truy xuất dữ liệu sẽ gần như tương tự với cột của loại Văn bản.
Nhưng nếu hầu hết các giá trị được lưu trữ trong các cột loại VarChar (Max) đủ nhỏ để lưu trữ liên tiếp. Sau đó, việc truy xuất dữ liệu không bao gồm các cột LOB yêu cầu số lượng trang dữ liệu nhiều hơn để đọc vì giá trị cột LOB được lưu liên tiếp trong cùng một trang dữ liệu nơi lưu trữ các giá trị cột không phải LOB. Nhưng nếu truy vấn chọn bao gồm cột LOB thì nó yêu cầu số lượng trang cần đọc ít hơn để truy xuất dữ liệu so với các cột Loại văn bản.
Phần kết luận
Sử dụng VarChar(MAX)
loại dữ liệu hơn là TEXT
cho hiệu suất tốt.
Nguồn