2011-01-21 28 views
6

Nvarchar được sử dụng để lưu trữ dữ liệu unicode được sử dụng để lưu trữ dữ liệu đa ngôn ngữ. Nếu bạn không kết thúc lưu trữ unicode hiện nó vẫn chiếm cùng một không gian?Không nvarchar luôn luôn mất gấp đôi không gian như varchar?

+1

Tôi tin rằng mọi independet của ký tự được lưu trữ chỉ có một loại mã hóa sẽ được sử dụng, vì vậy, nó sẽ chiếm không gian từ các ký tự unicode bất kể ký tự được lưu trữ – John

Trả lời

6

CÓ.

Xem MSDN Books Online on NCHAR and NVARCHAR.

NCHAR:

Kích thước lưu trữ là hai lần n byte.

NVARCHAR

Kích thước lưu trữ, tính bằng byte, là hai lần so với số ký tự vào + 2 byte

+0

Bất kỳ ý tưởng nào về nén hàng/trang ảnh hưởng đến điều này như thế nào? 'select cast (N'Đây là phép thử 'dạng varbinary (20))' cho '0x5400680069007300200069007300200061002000'. Về nguyên tắc tôi đã nghĩ những con số đó có thể nén khá tốt. –

1

Sắp xếp. Không phải tất cả các ký tự unicode đều sử dụng hai byte. Utf-8, ví dụ, vẫn chỉ là một byte cho mỗi ký tự rất nhiều thời gian, nhưng hiếm khi bạn có thể cần 4 byte cho mỗi ký tự. Những gì nvarchar sẽ làm là phân bổ hai byte cho mỗi ký tự.

+1

n (var) char cột sử dụng UCS-2, đó là một 16-bit cố định chiều rộng mã hóa. Nó sẽ luôn luôn sử dụng chính xác hai byte cho mỗi ký tự, ngay cả khi một trong những byte đó là tất cả các số không. – JLRishe

Các vấn đề liên quan