Tôi hy vọng bài viết này sẽ giúp ích cho bạn.
http://geekswithbloss.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx
Sự kiện chính:
- Theo mặc định, TEXT và NTEXT lưu giá trị văn bản trong cấu trúc LOB
- Theo mặc định, NVARCHAR (MAX) lưu trữ giá trị văn bản trong cấu trúc bảng (Trừ khi nó lớn hơn 8000 byte)
Khi bạn thay đổi cột từ TEXT / NTEXT thành NVARCHAR (MAX), cách lưu trữ dữ liệu không bị thay đổi, nó chỉ cập nhật siêu dữ liệu của bảng. Cấu trúc dữ liệu chỉ được thay đổi trong lần tiếp theo giá trị được thay đổi. Điều này có thể được thực hiện ngay lập tức bằng cách chạy một cái gì đó như thế này:
update mytable set mycolumn1 = mycolumn1
Nếu bạn sử dụng cài đặt tùy chọn bảng mặc định cho NVARCHAR (MAX), thì dữ liệu trong bảng của bạn sẽ lớn hơn.
- Bạn sẽ cần xem xét các cài đặt và môi trường tùy chọn bảng của mình trước khi thay đổi cài đặt thành phù hợp với nhu cầu của bạn.
Kích thước bảng của bạn cuối cùng sẽ co lại, nếu bạn làm theo câu lệnh bảng thay đổi của bạn với câu lệnh bảng cập nhật.
Nói tóm lại, nếu bạn chạy câu lệnh cập nhật, buộc thay đổi lưu trữ cấu trúc dữ liệu, kích thước cơ sở dữ liệu của bạn sẽ nhỏ hơn, như mong đợi.
EDIT : Như bạn đã đề cập đến văn bản và không phải là TIẾP THEO, lợi ích của bạn trong không gian sẽ ít rõ ràng hơn bạn nghĩ. NTEXT chiếm gấp đôi dung lượng như những gì TEXT làm, nhưng đồng thời, bạn nên mong đợi NVARCHAR (MAX) sẽ chiếm khoảng một nửa không gian như những gì NTEXT làm. Theo tính toán của tôi, bạn sẽ thấy ít thay đổi so với kích thước cơ sở dữ liệu ban đầu của bạn.
Tín dụng đặc biệt cho http://www.douglubey.com/