日期:2014-05-17  浏览次数:20746 次

一个关于nvarchar(max) 的疑问,
昨天被一个高手骂了
我的数据库字段,大部分都使用的nvarchar(max)。他说这样很浪费我的空间。。并且查询效率很低。
应该用varchar类型,我知道nvarchar(max)字段实际是可以支持2G。
但是我实际并没有使用它啊,不知道各位有什么观点。

------解决方案--------------------
大值数据类型的存储位置我记得是可以设置的:

1 = 表中的 varchar(max)、nvarchar(max)、varbinary(max)、xml 和大型用户定义类型 (UDT) 列都存储在行外,用一个 16 字节的指针指向根目录。
0 = varchar(max)、nvarchar(max)、varbinary(max)、xml 和大型 UDT 值直接存储在数据行中(最大限制值为 8000 个字节,只要记录中可以容纳该值)。 如果记录中容纳不下该值,则指针存储在行内,其余内容存储在 LOB 存储空间内的行外。 0 为默认值。
参考:
http://msdn.microsoft.com/zh-cn/library/ms173530.aspx

在没有必要用varchar(max)的情况下,还是建议用varchar(n),杀鸡焉用牛刀...

------解决方案--------------------
varchar和nvarchar都是可变长度的,是根据字段长度觉得占有空间的。但是nvarchar字段字节的存储大小是所输入字符个数的两倍。查询速度我觉得多少会有些影响
------解决方案--------------------
上述测试,引自于http://www.yongfa365.com/Item/SQL-Server-varchar-nvarchar-max-performance.html