首页 新闻 会员 周边 捐助

sql-server 里 nvarchar(50) 和 nvarchar(255) 占用的空间一样吗

0
悬赏园豆:30 [已解决问题] 解决于 2018-06-17 12:23

目前这个字段大约20个字符左右,应该用nvarchar(50),但为了将来的扩充,觉得用nvarchar(255)比较好。 是不是两者实际占用的存储空间是一样的。

还有,如果这个字段用来做主键,nvarchar(255) 会不会增加索引占用的空间

五星的主页 五星 | 初学一级 | 园豆:125
提问于:2017-08-04 17:12
< >
分享
最佳答案
0

nvarchar(50) 和 nvarchar(255) 都存储相同的字符数,性能上是没有差别的,存储行为上也没有不同。因为它们都有相同的存储结构,字节的偏移,字节的列数(如果表中所有的列都是 nvarchar 类型)。区别只在于存储容量上。如果你有时间的话你可以创建一个存储过程自己玩一下,其实也要不了多久,呵呵。

收获园豆:10
耳朵嫁给了真正的谎 | 初学一级 |园豆:195 | 2017-08-04 17:35

 谢谢。可是作为索引时,可能会不同。 我用nvarchar(451)作索引时,企业管理器提示“更改列的数据类型将导致索引过大”,是不是在存储内容相同时, nvarchar(451)会比nvarchar(50)占用更多的索引空间

五星 | 园豆:125 (初学一级) | 2017-08-04 19:36

@五星: 你说的这个我没有试过,可能不太清楚呢

耳朵嫁给了真正的谎 | 园豆:195 (初学一级) | 2017-08-05 10:34
其他回答(3)
0

索引中所有列的长度之和不能超过 900 个字节。更改为指定的数据类型将超过最大的索引大小 <3d> 个字节。

收获园豆:10
金琥 | 园豆:2605 (老鸟四级) | 2017-08-05 10:01
0

实际上所占用的内存是一样的,都是你用多少占多少。但是你定义的内存过大的话,你在引用的时候这些虚拟内存也会被调用的!

收获园豆:5
幻丿影 | 园豆:41 (初学一级) | 2017-08-07 09:05
0

我知道对于mysql来说,是一样的。sql-server不知道,原理也应该是一样的。

收获园豆:5
会长 | 园豆:12463 (专家六级) | 2017-08-07 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册