我是一位新的 .net 程序员。作为一个新手,我总是尽可能地遵循最佳实践。今天我开始学习 SQL Server,并询问同事用户描述列应该使用哪种数据类型。他告诉我使用 nvarchar(MAX)
,我按照他说的做了,并且效果很好。
但是,我们在这种情况下是否总是应该使用 nvarchar(max)
?还是更好地分配类似 500 个字符的长度?
我提出这个问题是因为我谷歌了一下,看到有人说 nvarchar(max)
会为列保留大量内存,这可能会降低数据库的性能。
编辑:太棒了,你们的回答让我对这个话题非常清楚了。没有 Unicode 方面的问题,因此我将选择 varchar(600)。
nvarchar(max)
- 这就是它存在的目的。但是,如果你从经验上知道某列最多只有25或50个字符(例如电话号码),或者255个字符(电子邮件列),那么不要使用nvarchar(max)
- 使用适当的数据类型,在这种情况下应该使用nvarchar(25)
或适合你情况的长度。你需要知道你的数据将会是什么样子 - 根据此设计你的表格! - marc_snvarchar
= Unicode - 每个字符占用2个字节,因此最大长度为nvarchar(4000)
。varchar
= 非 Unicode - 每个字符占用1个字节,因此最大长度为varchar(8000)
。 - marc_s