Mối quan tâm lớn nhất là nvarchar
sử dụng 2 byte cho mỗi ký tự, trong khi varchar
sử dụng 1. Do đó, nvarchar(4000)
sử dụng cùng một dung lượng lưu trữ như varchar(8000)
*.
Ngoài tất cả dữ liệu nhân vật của bạn cần gấp đôi dung lượng lưu trữ, điều này cũng có nghĩa là:
- Bạn có thể phải sử dụng
nvarchar
các cột ngắn hơn để giữ các hàng trong giới hạn hàng 8060 byte / giới hạn cột ký tự 8000 byte.
- Nếu bạn đang sử dụng
nvarchar(max)
các cột, chúng sẽ bị đẩy ra khỏi hàng sớm hơn varchar(max)
.
- Bạn có thể phải sử dụng
nvarchar
các cột ngắn hơn để nằm trong giới hạn khóa chỉ mục 900 byte (Tôi không biết tại sao bạn muốn sử dụng khóa chỉ mục lớn như vậy, nhưng bạn không bao giờ biết).
Ngoài ra, làm việc với nvarchar
không có nhiều khác biệt, giả sử phần mềm máy khách của bạn được xây dựng để xử lý Unicode. SQL Server sẽ chuyển đổi một cách trong suốt varchar
sang một nvarchar
, vì vậy bạn không cần phải có tiền tố N cho các chuỗi ký tự trừ khi bạn đang sử dụng các ký tự 2 byte (tức là Unicode) theo nghĩa đen. Hãy lưu ý rằng việc đúc nvarchar
để varbinary
mang lại kết quả khác so với thực hiện tương tự varchar
. Điểm quan trọng là bạn sẽ không phải thay đổi ngay lập tức mọi nghĩa đen thành một chữ nvarchar để giữ cho ứng dụng hoạt động, giúp dễ dàng xử lý.
* Nếu bạn sử dụng nén dữ liệu (nén hàng nhẹ là đủ, Phiên bản doanh nghiệp được yêu cầu trước SQL Server 2016 SP1 ), bạn thường sẽ tìm nchar
và nvarchar
không tốn nhiều dung lượng hơn char
và varchar
do nén Unicode (sử dụng thuật toán SCSU) .