目前这个字段大约20个字符左右,应该用nvarchar(50),但为了将来的扩充,觉得用nvarchar(255)比较好。 是不是两者实际占用的存储空间是一样的。
还有,如果这个字段用来做主键,nvarchar(255) 会不会增加索引占用的空间
nvarchar(50) 和 nvarchar(255) 都存储相同的字符数,性能上是没有差别的,存储行为上也没有不同。因为它们都有相同的存储结构,字节的偏移,字节的列数(如果表中所有的列都是 nvarchar 类型)。区别只在于存储容量上。如果你有时间的话你可以创建一个存储过程自己玩一下,其实也要不了多久,呵呵。
谢谢。可是作为索引时,可能会不同。 我用nvarchar(451)作索引时,企业管理器提示“更改列的数据类型将导致索引过大”,是不是在存储内容相同时, nvarchar(451)会比nvarchar(50)占用更多的索引空间
@五星: 你说的这个我没有试过,可能不太清楚呢
索引中所有列的长度之和不能超过 900 个字节。更改为指定的数据类型将超过最大的索引大小 <3d> 个字节。
实际上所占用的内存是一样的,都是你用多少占多少。但是你定义的内存过大的话,你在引用的时候这些虚拟内存也会被调用的!
我知道对于mysql来说,是一样的。sql-server不知道,原理也应该是一样的。